mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-12 17:33:09 -06:00
Remove duplicate fields from stateChange
This commit is contained in:
parent
6f5cf19bf9
commit
eddd5ba41e
|
|
@ -32,11 +32,11 @@ func updateMemberships(
|
||||||
changes := membershipChanges(removed, added)
|
changes := membershipChanges(removed, added)
|
||||||
var eventNIDs []types.EventNID
|
var eventNIDs []types.EventNID
|
||||||
for _, change := range changes {
|
for _, change := range changes {
|
||||||
if change.added.EventNID != 0 {
|
if change.addedEventNID != 0 {
|
||||||
eventNIDs = append(eventNIDs, change.added.EventNID)
|
eventNIDs = append(eventNIDs, change.addedEventNID)
|
||||||
}
|
}
|
||||||
if change.removed.EventNID != 0 {
|
if change.removedEventNID != 0 {
|
||||||
eventNIDs = append(eventNIDs, change.removed.EventNID)
|
eventNIDs = append(eventNIDs, change.removedEventNID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,20 +53,18 @@ func updateMemberships(
|
||||||
for _, change := range changes {
|
for _, change := range changes {
|
||||||
var ae *gomatrixserverlib.Event
|
var ae *gomatrixserverlib.Event
|
||||||
var re *gomatrixserverlib.Event
|
var re *gomatrixserverlib.Event
|
||||||
var targetUserNID types.EventStateKeyNID
|
targetUserNID := change.EventStateKeyNID
|
||||||
if change.removed.EventNID != 0 {
|
if change.removedEventNID != 0 {
|
||||||
ev, _ := eventMap(events).lookup(change.removed.EventNID)
|
ev, _ := eventMap(events).lookup(change.removedEventNID)
|
||||||
if ev != nil {
|
if ev != nil {
|
||||||
re = &ev.Event
|
re = &ev.Event
|
||||||
}
|
}
|
||||||
targetUserNID = change.removed.EventStateKeyNID
|
|
||||||
}
|
}
|
||||||
if change.added.EventNID != 0 {
|
if change.addedEventNID != 0 {
|
||||||
ev, _ := eventMap(events).lookup(change.added.EventNID)
|
ev, _ := eventMap(events).lookup(change.addedEventNID)
|
||||||
if ev != nil {
|
if ev != nil {
|
||||||
ae = &ev.Event
|
ae = &ev.Event
|
||||||
}
|
}
|
||||||
targetUserNID = change.added.EventStateKeyNID
|
|
||||||
}
|
}
|
||||||
if updates, err = updateMembership(updater, targetUserNID, re, ae, updates); err != nil {
|
if updates, err = updateMembership(updater, targetUserNID, re, ae, updates); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -222,8 +220,7 @@ func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
||||||
changes := pairUpChanges(removed, added)
|
changes := pairUpChanges(removed, added)
|
||||||
var result []stateChange
|
var result []stateChange
|
||||||
for _, c := range changes {
|
for _, c := range changes {
|
||||||
if c.added.EventTypeNID == types.MRoomMemberNID ||
|
if c.EventTypeNID == types.MRoomMemberNID {
|
||||||
c.removed.EventTypeNID == types.MRoomMemberNID {
|
|
||||||
result = append(result, c)
|
result = append(result, c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -231,8 +228,9 @@ func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
||||||
}
|
}
|
||||||
|
|
||||||
type stateChange struct {
|
type stateChange struct {
|
||||||
removed types.StateEntry
|
types.StateKeyTuple
|
||||||
added types.StateEntry
|
removedEventNID types.EventNID
|
||||||
|
addedEventNID types.EventNID
|
||||||
}
|
}
|
||||||
|
|
||||||
// pairUpChanges pairs up the state events added and removed for each type,
|
// pairUpChanges pairs up the state events added and removed for each type,
|
||||||
|
|
@ -245,26 +243,40 @@ func pairUpChanges(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:] {
|
||||||
result = append(result, stateChange{removed: s})
|
result = append(result, stateChange{
|
||||||
|
StateKeyTuple: s.StateKeyTuple,
|
||||||
|
removedEventNID: s.EventNID,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
case ri == len(removed):
|
case ri == len(removed):
|
||||||
for _, s := range added[ai:] {
|
for _, s := range added[ai:] {
|
||||||
result = append(result, stateChange{added: s})
|
result = append(result, stateChange{
|
||||||
|
StateKeyTuple: s.StateKeyTuple,
|
||||||
|
addedEventNID: s.EventNID,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
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],
|
StateKeyTuple: added[ai].StateKeyTuple,
|
||||||
added: added[ai],
|
removedEventNID: removed[ri].EventNID,
|
||||||
|
addedEventNID: added[ai].EventNID,
|
||||||
})
|
})
|
||||||
ai++
|
ai++
|
||||||
ri++
|
ri++
|
||||||
case added[ai].StateKeyTuple.LessThan(removed[ri].StateKeyTuple):
|
case added[ai].StateKeyTuple.LessThan(removed[ri].StateKeyTuple):
|
||||||
result = append(result, stateChange{added: added[ai]})
|
result = append(result, stateChange{
|
||||||
|
|
||||||
|
StateKeyTuple: added[ai].StateKeyTuple,
|
||||||
|
addedEventNID: added[ai].EventNID,
|
||||||
|
})
|
||||||
ai++
|
ai++
|
||||||
default:
|
default:
|
||||||
result = append(result, stateChange{removed: removed[ri]})
|
result = append(result, stateChange{
|
||||||
|
StateKeyTuple: removed[ai].StateKeyTuple,
|
||||||
|
removedEventNID: removed[ri].EventNID,
|
||||||
|
})
|
||||||
ri++
|
ri++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue