commit 21aa7a0

Hubert Hirtz  ·  2020-08-18 09:13:35 +0000 UTC
parent 0af566c
irc: Update TopicWho and TopicTime on TOPIC
2 files changed,  +17, -29
+9, -29
 1@@ -631,11 +631,7 @@ func (s *Session) handle(msg Message) (err error) {
 2 				s.users[nickCf] = &User{Nick: nick}
 3 			}
 4 			c.Members[s.users[nickCf]] = ""
 5-
 6-			t, ok := msg.Time()
 7-			if !ok {
 8-				t = time.Now()
 9-			}
10+			t := msg.TimeOrNow()
11 
12 			s.evts <- UserJoinEvent{
13 				Channel: c.Name,
14@@ -660,11 +656,7 @@ func (s *Session) handle(msg Message) (err error) {
15 			if u, ok := s.users[nickCf]; ok {
16 				delete(c.Members, u)
17 				s.cleanUser(u)
18-
19-				t, ok := msg.Time()
20-				if !ok {
21-					t = time.Now()
22-				}
23+				t := msg.TimeOrNow()
24 
25 				s.evts <- UserPartEvent{
26 					Channels: []string{c.Name},
27@@ -678,11 +670,7 @@ func (s *Session) handle(msg Message) (err error) {
28 		nickCf := strings.ToLower(nick)
29 
30 		if u, ok := s.users[nickCf]; ok {
31-			t, ok := msg.Time()
32-			if !ok {
33-				t = time.Now()
34-			}
35-
36+			t := msg.TimeOrNow()
37 			var channels []string
38 			for _, c := range s.channels {
39 				if _, ok := c.Members[u]; ok {
40@@ -742,9 +730,12 @@ func (s *Session) handle(msg Message) (err error) {
41 			s.channels[channelCf] = c
42 		}
43 	case "TOPIC":
44+		nick, _, _ := FullMask(msg.Prefix)
45 		channelCf := strings.ToLower(msg.Params[0])
46 		if c, ok := s.channels[channelCf]; ok {
47 			c.Topic = msg.Params[1]
48+			c.TopicWho = nick
49+			c.TopicTime = msg.TimeOrNow()
50 			s.channels[channelCf] = c
51 		}
52 	case "PRIVMSG", "NOTICE":
53@@ -772,10 +763,7 @@ func (s *Session) handle(msg Message) (err error) {
54 			break
55 		}
56 
57-		t, ok := msg.Time()
58-		if !ok {
59-			t = time.Now()
60-		}
61+		t := msg.TimeOrNow()
62 		if targetCf == s.nickCf {
63 			// TAGMSG to self
64 			s.evts <- QueryTagEvent{
65@@ -807,11 +795,7 @@ func (s *Session) handle(msg Message) (err error) {
66 		nickCf := strings.ToLower(nick)
67 		newNick := msg.Params[0]
68 		newNickCf := strings.ToLower(newNick)
69-
70-		t, ok := msg.Time()
71-		if !ok {
72-			t = time.Now()
73-		}
74+		t := msg.TimeOrNow()
75 
76 		formerUser := s.users[nickCf]
77 		formerUser.Nick = newNick
78@@ -855,11 +839,7 @@ func (s *Session) handle(msg Message) (err error) {
79 func (s *Session) privmsgToEvent(msg Message) (ev Event) {
80 	nick, _, _ := FullMask(msg.Prefix)
81 	targetCf := strings.ToLower(msg.Params[0])
82-
83-	t, ok := msg.Time()
84-	if !ok {
85-		t = time.Now()
86-	}
87+	t := msg.TimeOrNow()
88 
89 	if !s.IsChannel(targetCf) {
90 		// PRIVMSG to self
+8, -0
 1@@ -311,6 +311,14 @@ func (msg *Message) Time() (t time.Time, ok bool) {
 2 	return
 3 }
 4 
 5+func (msg *Message) TimeOrNow() time.Time {
 6+	t, ok := msg.Time()
 7+	if ok {
 8+		return t
 9+	}
10+	return time.Now()
11+}
12+
13 func FullMask(s string) (nick, user, host string) {
14 	if s == "" {
15 		return