diff --git a/roominfotree/roominfotree.go b/roominfotree/roominfotree.go index f2c3e4e..6c9c7fa 100644 --- a/roominfotree/roominfotree.go +++ b/roominfotree/roominfotree.go @@ -74,6 +74,23 @@ func getMembersByHomeserverByRoomID(roomIDs []id.RoomID, client *mautrix.Client) return membersByHomeserverByRoomID } +// Gets the homeservers appearing in the given membersByHomeserverByRoomID map tree. +func getHomeservers(membersByHomeserverByRoomID map[id.RoomID]map[string]uint) []string { + homeserverSet := make(map[string]bool) + for _, membersByHomeserver := range membersByHomeserverByRoomID { + for hs := range membersByHomeserver { + homeserverSet[hs] = true + } + } + + homeservers := make([]string, 0, len(homeserverSet)) + for hs := range homeserverSet { + homeservers = append(homeservers, hs) + } + + return homeservers +} + func getServerVersionInfoByHomeserver(homeservers []string, federationClient *fclient.Client) map[string](fclient.Version) { homeserverChannel := make(chan string) go func() { @@ -114,18 +131,7 @@ func getServerVersionInfoByHomeserver(homeservers []string, federationClient *fc func Get(roomIDs []id.RoomID, client *mautrix.Client, federationClient *fclient.Client) RoomInfoTree { membersByHomeserverByRoomID := getMembersByHomeserverByRoomID(roomIDs, client) - - homeserverSet := make(map[string]bool) - for _, membersByHomeserver := range membersByHomeserverByRoomID { - for hs := range membersByHomeserver { - homeserverSet[hs] = true - } - } - homeservers := make([]string, 0, len(homeserverSet)) - for hs := range homeserverSet { - homeservers = append(homeservers, hs) - } - + homeservers := getHomeservers(membersByHomeserverByRoomID) serverVersionInfoByHomeserver := getServerVersionInfoByHomeserver(homeservers, federationClient) roomInfoTree := make(RoomInfoTree)