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
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