Add support for unbridging guilds

This commit is contained in:
Tulir Asokan
2023-01-13 17:01:23 +02:00
parent 856f9a40fa
commit 9d84faa954
4 changed files with 78 additions and 46 deletions

View File

@@ -17,6 +17,7 @@
package main
import (
"errors"
"fmt"
"sync"
@@ -285,3 +286,32 @@ func (guild *Guild) UpdateAvatar(iconID string) bool {
}
return true
}
func (guild *Guild) cleanup() {
if guild.MXID == "" {
return
}
intent := guild.bridge.Bot
if guild.bridge.SpecVersions.UnstableFeatures["com.beeper.room_yeeting"] {
err := intent.BeeperDeleteRoom(guild.MXID)
if err == nil || errors.Is(err, mautrix.MNotFound) {
return
}
guild.log.Warnfln("Failed to delete %s using hungryserv yeet endpoint, falling back to normal behavior: %v", guild.MXID, err)
}
guild.bridge.cleanupRoom(intent, guild.MXID, false, guild.log)
}
func (guild *Guild) RemoveMXID() {
guild.bridge.guildsLock.Lock()
defer guild.bridge.guildsLock.Unlock()
if guild.MXID == "" {
return
}
delete(guild.bridge.guildsByMXID, guild.MXID)
guild.MXID = ""
guild.AvatarSet = false
guild.NameSet = false
guild.AutoBridgeChannels = false
guild.Update()
}