From a3702a900c184794d80654fa5ebf02b44f82416e Mon Sep 17 00:00:00 2001 From: sunglocto Date: Thu, 16 Jul 2026 09:05:03 +0100 Subject: [PATCH] AV hash custom nicks --- gtk-helpers.go | 22 +++++++++++++++++++++- gtk-message.go | 25 ++++++++++++++++++++++++- types.go | 3 ++- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/gtk-helpers.go b/gtk-helpers.go index e9d2b4d..3518b96 100644 --- a/gtk-helpers.go +++ b/gtk-helpers.go @@ -150,11 +150,31 @@ func switchToTab(jid string, w *gtk.Window) { id := JidMustParse(u.From).Resource //} + nick_label := gtk.NewLabel(JidMustParse(u.From).Resource) - custom_nick, ok := loadedConfig.CustomNicks[ocu.ID] + + var custom_nick string + + var vcu VCardUpdate + ok = u.Get(&vcu) if ok { + av_nick, ok := loadedConfig.CustomNicksAV[vcu.Photo] + if ok { + custom_nick = av_nick + } + } + + ocu_nick, ok := loadedConfig.CustomNicks[ocu.ID] + if ok { + custom_nick = ocu_nick + } + + if custom_nick != "" { nick_label.SetText(custom_nick) } + + + nick_label.SetEllipsize(pango.EllipsizeEnd) nick_label.AddCSSClass(mu.MucUserItem.Role) if mu.MucUserItem.Role == "visitor" { diff --git a/gtk-message.go b/gtk-message.go index ee2550b..9e82b85 100644 --- a/gtk-message.go +++ b/gtk-message.go @@ -190,11 +190,34 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter { m.Get(&ocu) id := JidMustParse(m.From).Resource name := id + + + // Avatar hash custom nicks. This code needs to be optimised. + mo, ok := mucmembers.Load(JidMustParse(m.From).Bare()) + if ok { + mm, ok := mo.(mucUnit) + if ok { + mmm, ok := mm.Members.Load(id) + if ok { + u := mmm.(stanza.Presence) + var vcu VCardUpdate + ok = u.Get(&vcu) + if ok { + av_nick, ok := loadedConfig.CustomNicksAV[vcu.Photo] + if ok { + name = av_nick + } + } + } + } + } + + custom_nick, ok := loadedConfig.CustomNicks[ocu.ID] if ok { name = custom_nick } - + if name == "" { name = JidMustParse(m.From).Bare() } diff --git a/types.go b/types.go index 99b5f96..22049de 100644 --- a/types.go +++ b/types.go @@ -29,7 +29,8 @@ type lambdaConfig struct { ShowPresenceUpdates bool CompactMode bool ShowAvatarsInMemberList bool - CustomNicks map[string]string + CustomNicks map[string]string // Anyone with a specific Occupant ID will have this nick + CustomNicksAV map[string]string // Anyone with a specific avatar hash will have this nick CheckUpdate string }