mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-12 17:33:09 -06:00
Separate filtering from pairing up changes in membershipChanges
This commit is contained in:
parent
dab501854a
commit
47fc2c38d2
|
|
@ -20,7 +20,7 @@ fi
|
||||||
|
|
||||||
ineffassign ./src/
|
ineffassign ./src/
|
||||||
go tool vet --all --shadow ./src
|
go tool vet --all --shadow ./src
|
||||||
gocyclo -over 16 src/
|
gocyclo -over 12 src/
|
||||||
gb test
|
gb test
|
||||||
|
|
||||||
# Check that all the packages can build.
|
# Check that all the packages can build.
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ type stateChange struct {
|
||||||
added types.StateEntry
|
added types.StateEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
func pairUpChanges(removed, added []types.StateEntry) []stateChange {
|
||||||
var ai int
|
var ai int
|
||||||
var ri int
|
var ri int
|
||||||
var result []stateChange
|
var result []stateChange
|
||||||
|
|
@ -183,22 +183,14 @@ func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
||||||
switch {
|
switch {
|
||||||
case ai == len(added):
|
case ai == len(added):
|
||||||
for _, s := range removed[ri:] {
|
for _, s := range removed[ri:] {
|
||||||
if s.EventTypeNID == types.MRoomMemberNID {
|
result = append(result, stateChange{removed: s})
|
||||||
result = append(result, stateChange{removed: s})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
case ri == len(removed):
|
case ri == len(removed):
|
||||||
for _, s := range removed[ai:] {
|
for _, s := range added[ai:] {
|
||||||
if s.EventTypeNID == types.MRoomMemberNID {
|
result = append(result, stateChange{added: s})
|
||||||
result = append(result, stateChange{added: s})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
case added[ai].EventTypeNID != types.MRoomMemberNID:
|
|
||||||
ai++
|
|
||||||
case removed[ri].EventTypeNID != types.MRoomMemberNID:
|
|
||||||
ri++
|
|
||||||
case added[ai].StateKeyTuple == removed[ri].StateKeyTuple:
|
case added[ai].StateKeyTuple == removed[ri].StateKeyTuple:
|
||||||
result = append(result, stateChange{
|
result = append(result, stateChange{
|
||||||
removed: removed[ri],
|
removed: removed[ri],
|
||||||
|
|
@ -215,3 +207,17 @@ func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// membershipChanges pairs up the membership state changes from a sorted list
|
||||||
|
// of state removed and a sorted list of state added.
|
||||||
|
func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
||||||
|
changes := pairUpChanges(removed, added)
|
||||||
|
var result []stateChange
|
||||||
|
for _, c := range changes {
|
||||||
|
if c.added.EventTypeNID == types.MRoomMemberNID ||
|
||||||
|
c.removed.EventTypeNID == types.MRoomMemberNID {
|
||||||
|
result = append(result, c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue