Преглед изворни кода

Fix bugs in manual un/bridging

Tulir Asokan пре 2 година
родитељ
комит
ef7e77515a
1 измењених фајлова са 7 додато и 6 уклоњено
  1. 7 6
      commands.go

+ 7 - 6
commands.go

@@ -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
 	}
-	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 {