aboutsummaryrefslogtreecommitdiff
path: root/currentstateserver/internal/api.go
diff options
context:
space:
mode:
Diffstat (limited to 'currentstateserver/internal/api.go')
-rw-r--r--currentstateserver/internal/api.go19
1 files changed, 18 insertions, 1 deletions
diff --git a/currentstateserver/internal/api.go b/currentstateserver/internal/api.go
index e945d0c1..c581c524 100644
--- a/currentstateserver/internal/api.go
+++ b/currentstateserver/internal/api.go
@@ -74,10 +74,27 @@ func (a *CurrentStateInternalAPI) QuerySharedUsers(ctx context.Context, req *api
if err != nil {
return err
}
+ roomIDs = append(roomIDs, req.IncludeRoomIDs...)
+ excludeMap := make(map[string]bool)
+ for _, roomID := range req.ExcludeRoomIDs {
+ excludeMap[roomID] = true
+ }
+ // filter out excluded rooms
+ j := 0
+ for i := range roomIDs {
+ // move elements to include to the beginning of the slice
+ // then trim elements on the right
+ if !excludeMap[roomIDs[i]] {
+ roomIDs[j] = roomIDs[i]
+ j++
+ }
+ }
+ roomIDs = roomIDs[:j]
+
users, err := a.DB.JoinedUsersSetInRooms(ctx, roomIDs)
if err != nil {
return err
}
- res.UserIDs = users
+ res.UserIDsToCount = users
return nil
}