commit 3567b35
Hubert Hirtz
·
2020-08-15 14:57:59 +0000 UTC
parent 54b1008
Remove UserEvent and ChannelEvent
3 files changed,
+65,
-84
M
app.go
+3,
-1
1@@ -106,7 +106,9 @@ func (app *App) handleIRCEvent(ev irc.Event) {
2 app.win.RemoveBuffer(ev.Channel)
3 case irc.UserPartEvent:
4 line := fmt.Sprintf("\x034-\x0314%s\x03", ev.Nick)
5- app.win.AddLine(ev.Channel, ui.NewLine(ev.Time, "--", line, true), false)
6+ for _, channel := range ev.Channels {
7+ app.win.AddLine(channel, ui.NewLine(ev.Time, "--", line, true), false)
8+ }
9 case irc.QueryMessageEvent:
10 if ev.Command == "PRIVMSG" {
11 l := ui.LineFromIRCMessage(ev.Time, ev.Nick, ev.Content, false)
+16,
-37
1@@ -1,7 +1,6 @@
2 package irc
3
4 import (
5- "strings"
6 "time"
7 )
8
9@@ -14,26 +13,6 @@ type RawMessageEvent struct {
10
11 type RegisteredEvent struct{}
12
13-type UserEvent struct {
14- Nick string
15- User string
16- Host string
17-}
18-
19-func (u UserEvent) NickMapped() (nick string) {
20- nick = strings.ToLower(u.Nick)
21- return
22-}
23-
24-type ChannelEvent struct {
25- Channel string
26-}
27-
28-func (c ChannelEvent) ChannelMapped() (channel string) {
29- channel = strings.ToLower(c.Channel)
30- return
31-}
32-
33 type SelfNickEvent struct {
34 FormerNick string
35 NewNick string
36@@ -47,51 +26,51 @@ type UserNickEvent struct {
37 }
38
39 type SelfJoinEvent struct {
40- ChannelEvent
41+ Channel string
42 }
43
44 type UserJoinEvent struct {
45- UserEvent
46- ChannelEvent
47- Time time.Time
48+ Nick string
49+ Channel string
50+ Time time.Time
51 }
52
53 type SelfPartEvent struct {
54- ChannelEvent
55+ Channel string
56 }
57
58 type UserPartEvent struct {
59- UserEvent
60- ChannelEvent
61- Time time.Time
62+ Nick string
63+ Channels []string
64+ Time time.Time
65 }
66
67 type QueryMessageEvent struct {
68- UserEvent
69+ Nick string
70 Command string
71 Content string
72 Time time.Time
73 }
74
75 type ChannelMessageEvent struct {
76- UserEvent
77- ChannelEvent
78+ Nick string
79+ Channel string
80 Command string
81 Content string
82 Time time.Time
83 }
84
85 type QueryTypingEvent struct {
86- UserEvent
87+ Nick string
88 State int
89 Time time.Time
90 }
91
92 type ChannelTypingEvent struct {
93- UserEvent
94- ChannelEvent
95- State int
96- Time time.Time
97+ Nick string
98+ Channel string
99+ State int
100+ Time time.Time
101 }
102
103 type HistoryEvent struct {
+46,
-46
1@@ -68,20 +68,6 @@ const (
2 ConnQuit
3 )
4
5-type User struct {
6- Nick string
7- AwayMsg string
8-}
9-
10-type Channel struct {
11- Name string
12- Members map[string]string
13- Topic string
14- TopicWho string
15- TopicTime time.Time
16- Secret bool
17-}
18-
19 type action interface{}
20
21 type (
22@@ -114,6 +100,20 @@ type (
23 }
24 )
25
26+type User struct {
27+ Nick string
28+ AwayMsg string
29+}
30+
31+type Channel struct {
32+ Name string
33+ Members map[string]string
34+ Topic string
35+ TopicWho string
36+ TopicTime time.Time
37+ Secret bool
38+}
39+
40 type SessionParams struct {
41 Nickname string
42 Username string
43@@ -583,7 +583,6 @@ func (s *Session) handleInner(msg Message) (err error) {
44 nick, _, _ := FullMask(msg.Prefix)
45 lNick := strings.ToLower(nick)
46 channel := strings.ToLower(msg.Params[0])
47- channelEv := ChannelEvent{Channel: msg.Params[0]}
48
49 if lNick == s.lNick {
50 s.channels[channel] = Channel{
51@@ -602,20 +601,19 @@ func (s *Session) handleInner(msg Message) (err error) {
52 }
53
54 s.evts <- UserJoinEvent{
55- ChannelEvent: channelEv,
56- UserEvent: UserEvent{Nick: nick},
57- Time: t,
58+ Channel: msg.Params[0],
59+ Nick: nick,
60+ Time: t,
61 }
62 }
63 case "PART":
64 nick, _, _ := FullMask(msg.Prefix)
65 lNick := strings.ToLower(nick)
66 channel := strings.ToLower(msg.Params[0])
67- channelEv := ChannelEvent{Channel: msg.Params[0]}
68
69 if lNick == s.lNick {
70 delete(s.channels, channel)
71- s.evts <- SelfPartEvent{ChannelEvent: channelEv}
72+ s.evts <- SelfPartEvent{Channel: msg.Params[0]}
73 } else if c, ok := s.channels[channel]; ok {
74 delete(c.Members, lNick)
75
76@@ -625,9 +623,9 @@ func (s *Session) handleInner(msg Message) (err error) {
77 }
78
79 s.evts <- UserPartEvent{
80- ChannelEvent: channelEv,
81- UserEvent: UserEvent{Nick: nick},
82- Time: t,
83+ Channels: msg.Params[:1],
84+ Nick: nick,
85+ Time: t,
86 }
87 }
88 case "QUIT":
89@@ -639,17 +637,19 @@ func (s *Session) handleInner(msg Message) (err error) {
90 t = time.Now()
91 }
92
93+ var channels []string
94+
95 for _, c := range s.channels {
96 if _, ok := c.Members[lNick]; !ok {
97 continue
98 }
99+ channels = append(channels, c.Name)
100+ }
101
102- // TODO UserQuitEvent
103- s.evts <- UserPartEvent{
104- ChannelEvent: ChannelEvent{Channel: c.Name},
105- UserEvent: UserEvent{Nick: nick},
106- Time: t,
107- }
108+ s.evts <- UserPartEvent{
109+ Channels: channels,
110+ Nick: nick,
111+ Time: t,
112 }
113 case rplNamreply:
114 channel := strings.ToLower(msg.Params[2])
115@@ -669,7 +669,7 @@ func (s *Session) handleInner(msg Message) (err error) {
116 }
117 }
118 case rplEndofnames:
119- s.evts <- SelfJoinEvent{ChannelEvent{Channel: msg.Params[1]}}
120+ s.evts <- SelfJoinEvent{Channel: msg.Params[1]}
121 case rplTopic:
122 channel := strings.ToLower(msg.Params[1])
123
124@@ -707,17 +707,17 @@ func (s *Session) handleInner(msg Message) (err error) {
125 if target == s.lNick {
126 // TAGMSG to self
127 s.evts <- QueryTypingEvent{
128- UserEvent: UserEvent{Nick: nick},
129- State: typing,
130- Time: t,
131+ Nick: nick,
132+ State: typing,
133+ Time: t,
134 }
135 } else if _, ok := s.channels[target]; ok {
136 // TAGMSG to channel
137 s.evts <- ChannelTypingEvent{
138- UserEvent: UserEvent{Nick: nick},
139- ChannelEvent: ChannelEvent{Channel: msg.Params[0]},
140- State: typing,
141- Time: t,
142+ Nick: nick,
143+ Channel: msg.Params[0],
144+ State: typing,
145+ Time: t,
146 }
147 }
148 case "BATCH":
149@@ -788,19 +788,19 @@ func (s *Session) privmsgToEvent(msg Message) (ev Event) {
150 if !s.IsChannel(target) {
151 // PRIVMSG to self
152 ev = QueryMessageEvent{
153- UserEvent: UserEvent{Nick: nick},
154- Command: msg.Command,
155- Content: msg.Params[1],
156- Time: t,
157+ Nick: nick,
158+ Command: msg.Command,
159+ Content: msg.Params[1],
160+ Time: t,
161 }
162 } else if _, ok := s.channels[target]; ok {
163 // PRIVMSG to channel
164 ev = ChannelMessageEvent{
165- UserEvent: UserEvent{Nick: nick},
166- ChannelEvent: ChannelEvent{Channel: msg.Params[0]},
167- Command: msg.Command,
168- Content: msg.Params[1],
169- Time: t,
170+ Nick: nick,
171+ Channel: msg.Params[0],
172+ Command: msg.Command,
173+ Content: msg.Params[1],
174+ Time: t,
175 }
176 }
177