From 94a7f7140d332e413e59dab1665085a08e12081e Mon Sep 17 00:00:00 2001 From: June Date: Sun, 17 Aug 2025 22:59:42 +0200 Subject: [PATCH] move building of membersByHomeserversByRoomID map into separate function Move building of membersByHomeserversByRoomID map into separate function to make Get function easier to follow. --- roominfotree/roominfotree.go | 40 +++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/roominfotree/roominfotree.go b/roominfotree/roominfotree.go index d5928a0..f2c3e4e 100644 --- a/roominfotree/roominfotree.go +++ b/roominfotree/roominfotree.go @@ -52,6 +52,28 @@ var unknownServerVersionInfo = fclient.Version{ }, } +func getMembersByHomeserverByRoomID(roomIDs []id.RoomID, client *mautrix.Client) map[id.RoomID](map[string]uint) { + joinedMembersByRoomID := make(map[id.RoomID]*mautrix.RespJoinedMembers) + for _, roomID := range roomIDs { + joinedMembers, err := client.JoinedMembers(context.Background(), roomID) + if err != nil { + log.Fatal(err) + } + joinedMembersByRoomID[roomID] = joinedMembers + } + + membersByHomeserverByRoomID := make(map[id.RoomID](map[string]uint)) + for roomID, joinedMembers := range joinedMembersByRoomID { + membersByHomeserver := make(map[string]uint) + for userID := range joinedMembers.Joined { + membersByHomeserver[userID.Homeserver()]++ + } + membersByHomeserverByRoomID[roomID] = membersByHomeserver + } + + return membersByHomeserverByRoomID +} + func getServerVersionInfoByHomeserver(homeservers []string, federationClient *fclient.Client) map[string](fclient.Version) { homeserverChannel := make(chan string) go func() { @@ -91,23 +113,7 @@ func getServerVersionInfoByHomeserver(homeservers []string, federationClient *fc } func Get(roomIDs []id.RoomID, client *mautrix.Client, federationClient *fclient.Client) RoomInfoTree { - joinedMembersByRoomID := make(map[id.RoomID]*mautrix.RespJoinedMembers) - for _, roomID := range roomIDs { - joinedMembers, err := client.JoinedMembers(context.Background(), roomID) - if err != nil { - log.Fatal(err) - } - joinedMembersByRoomID[roomID] = joinedMembers - } - - membersByHomeserverByRoomID := make(map[id.RoomID](map[string]uint)) - for roomID, joinedMembers := range joinedMembersByRoomID { - membersByHomeserver := make(map[string]uint) - for key := range joinedMembers.Joined { - membersByHomeserver[key.Homeserver()]++ - } - membersByHomeserverByRoomID[roomID] = membersByHomeserver - } + membersByHomeserverByRoomID := getMembersByHomeserverByRoomID(roomIDs, client) homeserverSet := make(map[string]bool) for _, membersByHomeserver := range membersByHomeserverByRoomID {