From 25d85962e4b0e8f6f4fdf77cd6e14d43b2238e8e Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 31 May 2022 00:34:21 +0300 Subject: [PATCH] Adjust some things --- go.mod | 2 +- go.sum | 4 ++-- guildportal.go | 6 +++--- portal.go | 5 ++--- puppet.go | 10 +++++----- user.go | 7 +------ 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 21826d8..ef539cf 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e github.com/yuin/goldmark v1.4.12 maunium.net/go/maulogger/v2 v2.3.2 - maunium.net/go/mautrix v0.11.1-0.20220530120827-7eec0bd4d3c4 + maunium.net/go/mautrix v0.11.1-0.20220530212627-b15517460fdb ) require ( diff --git a/go.sum b/go.sum index 352b362..0187cdd 100644 --- a/go.sum +++ b/go.sum @@ -58,5 +58,5 @@ maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M= maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= maunium.net/go/maulogger/v2 v2.3.2 h1:1XmIYmMd3PoQfp9J+PaHhpt80zpfmMqaShzUTC7FwY0= maunium.net/go/maulogger/v2 v2.3.2/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A= -maunium.net/go/mautrix v0.11.1-0.20220530120827-7eec0bd4d3c4 h1:/A03e5QOu8nTi6QChiEr0Udg2YE6alB7ZNJwYdHqDQk= -maunium.net/go/mautrix v0.11.1-0.20220530120827-7eec0bd4d3c4/go.mod h1:CiKpMhAx5QZFHK03jpWb0iKI3sGU8x6+LfsOjDrcO8I= +maunium.net/go/mautrix v0.11.1-0.20220530212627-b15517460fdb h1:MTY4bW0yhg8bHszMSNymTrHvIRdiDjcnQKC8qSbt5BE= +maunium.net/go/mautrix v0.11.1-0.20220530212627-b15517460fdb/go.mod h1:CiKpMhAx5QZFHK03jpWb0iKI3sGU8x6+LfsOjDrcO8I= diff --git a/guildportal.go b/guildportal.go index dbe030e..c5282b8 100644 --- a/guildportal.go +++ b/guildportal.go @@ -21,6 +21,7 @@ import ( "sync" log "maunium.net/go/maulogger/v2" + "maunium.net/go/mautrix" "maunium.net/go/mautrix/event" "maunium.net/go/mautrix/id" @@ -265,15 +266,14 @@ func (guild *Guild) UpdateAvatar(iconID string) bool { } guild.AvatarSet = false guild.Avatar = iconID + guild.AvatarURL = id.ContentURI{} if guild.Avatar != "" { var err error guild.AvatarURL, err = uploadAvatar(guild.bridge.Bot, discordgo.EndpointGuildIcon(guild.ID, iconID)) if err != nil { - guild.log.Warnln("Failed to reupload avatar %s: %v", iconID, err) + guild.log.Warnfln("Failed to reupload guild avatar %s: %v", guild.Avatar, err) return true } - } else { - guild.AvatarURL = id.ContentURI{} } if guild.MXID != "" { _, err := guild.bridge.Bot.SetRoomAvatar(guild.MXID, guild.AvatarURL) diff --git a/portal.go b/portal.go index 4eab5cd..0884284 100644 --- a/portal.go +++ b/portal.go @@ -1401,16 +1401,15 @@ func (portal *Portal) UpdateGroupDMAvatar(iconID string) bool { } portal.Avatar = iconID portal.AvatarSet = false + portal.AvatarURL = id.ContentURI{} if portal.Avatar != "" { uri, err := uploadAvatar(portal.MainIntent(), discordgo.EndpointGroupIcon(portal.Key.ChannelID, portal.Avatar)) if err != nil { - portal.log.Warnln("Failed to reupload avatar:", err) + portal.log.Warnfln("Failed to reupload channel avatar %s: %v", portal.Avatar, err) return true } else { portal.AvatarURL = uri } - } else { - portal.AvatarURL = id.ContentURI{} } portal.updateRoomAvatar() return true diff --git a/puppet.go b/puppet.go index 843c150..27bcdd7 100644 --- a/puppet.go +++ b/puppet.go @@ -206,16 +206,16 @@ func (puppet *Puppet) UpdateAvatar(info *discordgo.User) bool { if puppet.Avatar == info.Avatar && puppet.AvatarSet { return false } + avatarChanged := info.Avatar != puppet.Avatar puppet.Avatar = info.Avatar puppet.AvatarSet = false + puppet.AvatarURL = id.ContentURI{} - if puppet.Avatar == "" { - // TODO should we just use discord's default avatars? - puppet.AvatarURL = id.ContentURI{} - } else { + // TODO should we just use discord's default avatars for users with no avatar? + if puppet.Avatar != "" && (puppet.AvatarURL.IsEmpty() || avatarChanged) { url, err := uploadAvatar(puppet.DefaultIntent(), info.AvatarURL("")) if err != nil { - puppet.log.Warnln("Failed to reupload user avatar:", err) + puppet.log.Warnfln("Failed to reupload user avatar %s: %v", puppet.Avatar, err) return true } puppet.AvatarURL = url diff --git a/user.go b/user.go index 9bf9d5e..ea47912 100644 --- a/user.go +++ b/user.go @@ -454,7 +454,6 @@ func (user *User) Connect() error { user.Session = session - // Add our event handlers user.Session.AddHandler(user.readyHandler) user.Session.AddHandler(user.connectedHandler) user.Session.AddHandler(user.disconnectedHandler) @@ -482,7 +481,6 @@ func (user *User) Connect() error { func (user *User) Disconnect() error { user.Lock() defer user.Unlock() - if user.Session == nil { return ErrNotConnected } @@ -490,9 +488,7 @@ func (user *User) Disconnect() error { if err := user.Session.Close(); err != nil { return err } - user.Session = nil - return nil } @@ -507,14 +503,13 @@ func (user *User) bridgeMessage(guildID string) bool { return true } - user.log.Debugfln("Cgnoring message for non-bridged guild %s", guildID) + user.log.Debugfln("Ignoring message for non-bridged guild %s", guildID) return false } func (user *User) readyHandler(_ *discordgo.Session, r *discordgo.Ready) { user.log.Debugln("Discord connection ready") - // Update our user fields if user.DiscordID != r.User.ID { user.DiscordID = r.User.ID user.Update()