Fix bug in device list change tracking

This commit is contained in:
Till Faelligen 2023-02-03 12:27:02 +01:00
parent 22bee54c19
commit afd94dce8b
No known key found for this signature in database
GPG key ID: ACCDC9606D472758

View file

@ -144,6 +144,8 @@ func TrackChangedUsers(
// - Loop set of users and decrement by 1 for each user in newly left room.
// - If count=0 then they share no more rooms so inform BOTH parties of this via 'left'=[...] in /sync.
var queryRes roomserverAPI.QuerySharedUsersResponse
var stateRes roomserverAPI.QueryBulkStateContentResponse
if len(newlyLeftRooms) > 0 {
err = rsAPI.QuerySharedUsers(ctx, &roomserverAPI.QuerySharedUsersRequest{
UserID: userID,
IncludeRoomIDs: newlyLeftRooms,
@ -151,7 +153,7 @@ func TrackChangedUsers(
if err != nil {
return nil, nil, err
}
var stateRes roomserverAPI.QueryBulkStateContentResponse
err = rsAPI.QueryBulkStateContent(ctx, &roomserverAPI.QueryBulkStateContentRequest{
RoomIDs: newlyLeftRooms,
StateTuples: []gomatrixserverlib.StateKeyTuple{
@ -173,11 +175,13 @@ func TrackChangedUsers(
queryRes.UserIDsToCount[tuple.StateKey]--
}
}
for userID, count := range queryRes.UserIDsToCount {
if count <= 0 {
left = append(left, userID) // left is returned
}
}
}
// Join algorithm:
// - Get the set of all joined users prior to joining room - QuerySharedUsersRequest with 'ExcludeRoomID'.