From 359d158c699ef6d2d75f599376d1f460aff15a78 Mon Sep 17 00:00:00 2001 From: Hubert Hirtz Date: Mon, 13 Sep 2021 15:15:30 +0200 Subject: Show mode changes --- app.go | 12 ++++++++++++ irc/events.go | 5 +++++ irc/session.go | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/app.go b/app.go index 8dc3ac6..ffc098b 100644 --- a/app.go +++ b/app.go @@ -648,6 +648,18 @@ func (app *App) handleIRCEvent(ev interface{}) { HeadColor: tcell.ColorGray, Body: body.StyledString(), }) + case irc.ModeChangeEvent: + var body ui.StyledStringBuilder + body.Grow(len(ev.Mode) + 13) + body.SetStyle(tcell.StyleDefault.Foreground(tcell.ColorGray)) + body.WriteString("Mode change: ") + body.WriteString(ev.Mode) + app.win.AddLine(ev.Channel, ui.NotifyUnread, ui.Line{ + At: msg.TimeOrNow(), + Head: "--", + HeadColor: tcell.ColorGray, + Body: body.StyledString(), + }) case irc.MessageEvent: buffer, line, hlNotification := app.formatMessage(ev) var notify ui.NotifyType diff --git a/irc/events.go b/irc/events.go index eeac8fb..ba6e38d 100644 --- a/irc/events.go +++ b/irc/events.go @@ -51,6 +51,11 @@ type TopicChangeEvent struct { Topic string } +type ModeChangeEvent struct { + Channel string + Mode string +} + type MessageEvent struct { User string Target string diff --git a/irc/session.go b/irc/session.go index f799f38..692daf4 100644 --- a/irc/session.go +++ b/irc/session.go @@ -741,6 +741,14 @@ func (s *Session) handleRegistered(msg Message) Event { Topic: c.Topic, } } + case "MODE": + channelCf := s.Casemap(msg.Params[0]) + if c, ok := s.channels[channelCf]; ok { + return ModeChangeEvent{ + Channel: c.Name, + Mode: strings.Join(msg.Params[1:], " "), + } + } case "PRIVMSG", "NOTICE": targetCf := s.casemap(msg.Params[0]) nickCf := s.casemap(msg.Prefix.Name) -- cgit v1.2.3