mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-10 16:33:11 -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/
|
||||
go tool vet --all --shadow ./src
|
||||
gocyclo -over 16 src/
|
||||
gocyclo -over 12 src/
|
||||
gb test
|
||||
|
||||
# Check that all the packages can build.
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ type stateChange struct {
|
|||
added types.StateEntry
|
||||
}
|
||||
|
||||
func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
||||
func pairUpChanges(removed, added []types.StateEntry) []stateChange {
|
||||
var ai int
|
||||
var ri int
|
||||
var result []stateChange
|
||||
|
|
@ -183,22 +183,14 @@ func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
|||
switch {
|
||||
case ai == len(added):
|
||||
for _, s := range removed[ri:] {
|
||||
if s.EventTypeNID == types.MRoomMemberNID {
|
||||
result = append(result, stateChange{removed: s})
|
||||
}
|
||||
result = append(result, stateChange{removed: s})
|
||||
}
|
||||
return result
|
||||
case ri == len(removed):
|
||||
for _, s := range removed[ai:] {
|
||||
if s.EventTypeNID == types.MRoomMemberNID {
|
||||
result = append(result, stateChange{added: s})
|
||||
}
|
||||
for _, s := range added[ai:] {
|
||||
result = append(result, stateChange{added: s})
|
||||
}
|
||||
return result
|
||||
case added[ai].EventTypeNID != types.MRoomMemberNID:
|
||||
ai++
|
||||
case removed[ri].EventTypeNID != types.MRoomMemberNID:
|
||||
ri++
|
||||
case added[ai].StateKeyTuple == removed[ri].StateKeyTuple:
|
||||
result = append(result, stateChange{
|
||||
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