Fix bugs in manual un/bridging

This commit is contained in:
Tulir Asokan
2023-03-10 18:41:28 +02:00
parent 0deec8b853
commit ef7e77515a

View File

@@ -708,7 +708,7 @@ func fnBridge(ce *WrappedCommandEvent) {
return
}
portal.roomCreateLock.Lock()
defer portal.roomCreateLock.Lock()
defer portal.roomCreateLock.Unlock()
if portal.MXID != "" {
hasUnbridgePermission := ce.User.PermissionLevel >= bridgeconfig.PermissionLevelAdmin
if !hasUnbridgePermission {
@@ -759,9 +759,10 @@ func fnBridge(ce *WrappedCommandEvent) {
state, err := portal.MainIntent().State(portal.MXID)
if err != nil {
ce.ZLog.Error().Err(err).Msg("Failed to update state cache for room")
}
} else {
encryptionEvent, isEncrypted := state[event.StateEncryption][""]
portal.Encrypted = isEncrypted && encryptionEvent.Content.AsEncryption().Algorithm == id.AlgorithmMegolmV1
}
portal.Update()
ce.Reply("Room successfully bridged")
ce.ZLog.Info().
@@ -794,9 +795,9 @@ var cmdDeletePortal = &commands.FullHandler{
func fnUnbridge(ce *WrappedCommandEvent) {
ce.Portal.roomCreateLock.Lock()
defer ce.Portal.roomCreateLock.Lock()
defer ce.Portal.roomCreateLock.Unlock()
ce.Portal.removeFromSpace()
ce.Portal.cleanup(ce.Command == "delete-portal")
ce.Portal.cleanup(ce.Command == "unbridge")
ce.Portal.RemoveMXID()
}
@@ -845,7 +846,7 @@ func fnDeleteAllPortals(ce *WrappedCommandEvent) {
guild.Delete()
leave(guild.MXID, ce.Bot)
}
ce.Reply("Finished deleting portal info. Now cleaning up rooms in background.")
ce.Reply("Finished deleting portal info. Now cleaning up rooms in background. You'll have to restart the bridge or relogin before rooms can be bridged again.")
go func() {
for _, portal := range portals {