Răsfoiți Sursa

Remove duplicate calls to send m.space.child for DM rooms

Tulir Asokan 2 ani în urmă
părinte
comite
522ac4e2fe
2 a modificat fișierele cu 12 adăugiri și 17 ștergeri
  1. 10 15
      portal.go
  2. 2 2
      user.go

+ 10 - 15
portal.go

@@ -424,7 +424,11 @@ func (portal *Portal) CreateMatrixRoom(user *User, channel *discordgo.Channel) e
 		}
 	}
 
-	portal.updateSpace(user)
+	if portal.GuildID == "" {
+		user.addPrivateChannelToSpace(portal)
+	} else {
+		portal.updateSpace()
+	}
 	portal.ensureUserInvited(user)
 	user.syncChatDoublePuppetDetails(portal, true)
 
@@ -1704,21 +1708,11 @@ func (portal *Portal) ExpectedSpaceID() id.RoomID {
 	return ""
 }
 
-func (portal *Portal) IsInSpace(user *User) bool {
-	if portal.GuildID == "" {
-		return user.IsInSpace(portal.Key.ChannelID)
-	} else {
-		return portal.ExpectedSpaceID() == portal.InSpace
-	}
-}
-
-func (portal *Portal) updateSpace(user *User) bool {
+func (portal *Portal) updateSpace() bool {
 	if portal.MXID == "" {
 		return false
 	}
-	if portal.GuildID == "" {
-		user.addPrivateChannelToSpace(portal)
-	} else if portal.Parent != nil {
+	if portal.Parent != nil {
 		return portal.addToSpace(portal.Parent.MXID)
 	} else if portal.Guild != nil {
 		return portal.addToSpace(portal.Guild.MXID)
@@ -1781,8 +1775,9 @@ func (portal *Portal) UpdateInfo(source *User, meta *discordgo.Channel) *discord
 	}
 	changed = portal.UpdateTopic(meta.Topic) || changed
 	changed = portal.UpdateParent(meta.ParentID) || changed
-	if portal.MXID != "" && !portal.IsInSpace(source) {
-		changed = portal.updateSpace(source) || changed
+	// Private channels are added to the space in User.handlePrivateChannel
+	if portal.GuildID != "" && portal.MXID != "" && portal.ExpectedSpaceID() != portal.InSpace {
+		changed = portal.updateSpace() || changed
 	}
 	if changed {
 		portal.UpdateBridgeInfo()

+ 2 - 2
user.go

@@ -541,11 +541,11 @@ func (user *User) readyHandler(_ *discordgo.Session, r *discordgo.Ready) {
 	for _, guild := range r.Guilds {
 		user.handleGuild(guild, updateTS, portalsInSpace[guild.ID])
 	}
-	user.PrunePortalList(updateTS)
 	for i, ch := range r.PrivateChannels {
 		portal := user.GetPortalByMeta(ch)
 		user.handlePrivateChannel(portal, ch, updateTS, i < user.bridge.Config.Bridge.PrivateChannelCreateLimit, portalsInSpace[portal.Key.ChannelID])
 	}
+	user.PrunePortalList(updateTS)
 
 	if r.ReadState.Version > user.ReadStateVersion {
 		// TODO can we figure out which read states are actually new?
@@ -595,7 +595,7 @@ func (user *User) handlePrivateChannel(portal *Portal, meta *discordgo.Channel,
 }
 
 func (user *User) addGuildToSpace(guild *Guild, isInSpace bool, timestamp time.Time) bool {
-	if len(guild.MXID) > 0 {
+	if len(guild.MXID) > 0 && !isInSpace {
 		_, err := user.bridge.Bot.SendStateEvent(user.GetSpaceRoom(), event.StateSpaceChild, guild.MXID.String(), &event.SpaceChildEventContent{
 			Via: []string{user.bridge.AS.HomeserverDomain},
 		})