commit b7bfc0e
Hubert Hirtz
·
2021-12-09 12:07:12 +0000 UTC
parent ed65a82
Take NICKs into account when reducing join/part lines So that 1/ redundant events are removed even if people change nick in the mean time and 2/ events that are actually not redundant are not removed, e.g. +val val->jw +dan dan->val -val should be reduced to +val val->jw instead of val->jw +dan dan->val
1 files changed,
+12,
-8
M
app.go
M
app.go
+12,
-8
1@@ -1140,7 +1140,6 @@ Outer:
2 }
3 }
4 }
5- former.Data = append(former.Data, addedEvent)
6 case irc.UserJoinEvent:
7 for i := len(former.Data) - 1; i >= 0; i-- {
8 switch ev := former.Data[i].(type) {
9@@ -1152,23 +1151,28 @@ Outer:
10 }
11 }
12 }
13- former.Data = append(former.Data, addedEvent)
14 case irc.UserQuitEvent, irc.UserPartEvent:
15+ user := partQuitUser(addedEvent)
16+ var toRemove []int
17 for i := len(former.Data) - 1; i >= 0; i-- {
18 switch ev := former.Data[i].(type) {
19+ case irc.UserNickEvent:
20+ if ev.User == user {
21+ user = ev.FormerNick
22+ toRemove = append(toRemove, i)
23+ }
24 case irc.UserJoinEvent:
25- if ev.User == partQuitUser(addedEvent) {
26- former.Data = append(former.Data[:i], former.Data[i+1:]...)
27+ if ev.User == user {
28+ for _, i := range append(toRemove, i) {
29+ former.Data = append(former.Data[:i], former.Data[i+1:]...)
30+ }
31 changed = true
32 continue Outer
33 }
34 }
35 }
36- former.Data = append(former.Data, addedEvent)
37- //case irc.ModeChangeEvent: //TODO
38- default:
39- former.Data = append(former.Data, addedEvent)
40 }
41+ former.Data = append(former.Data, addedEvent)
42 }
43 if changed {
44 if len(former.Data) == 0 {