From 69bee8766ec046d1ed828a0fa37254e6a22c7c1a Mon Sep 17 00:00:00 2001 From: sunglocto Date: Fri, 30 Jan 2026 19:08:18 +0000 Subject: [PATCH] uhh --- go.mod | 4 ++-- go.sum | 6 ++---- gtk-helpers.go | 7 ++----- gtk-message.go | 36 ++++++++++++++++++++++++++++++++---- main.go | 12 ++++++++++-- xmpp-vcard.go | 7 +++++++ 6 files changed, 55 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 7e856f8..71eb0c3 100644 --- a/go.mod +++ b/go.mod @@ -9,14 +9,14 @@ require ( github.com/jacoblockett/sanitizefilename v1.0.1 github.com/jasonlovesdoggo/gopen v0.0.0-20250130105607-39c98c645030 github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f - github.com/sqweek/dialog v0.0.0-20260123140253-64c163d53aac + github.com/kr/pretty v0.1.0 gosrc.io/xmpp v0.5.1 mellium.im/xmpp v0.22.0 ) require ( github.com/KarpelesLab/weak v0.1.1 // indirect - github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf // indirect + github.com/kr/text v0.1.0 // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6 // indirect golang.org/x/net v0.29.0 // indirect golang.org/x/sync v0.8.0 // indirect diff --git a/go.sum b/go.sum index 8617514..ab080ae 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/KarpelesLab/weak v0.1.1 h1:fNnlPo3aypS9tBzoEQluY13XyUfd/eWaSE/vMvo9s4g= github.com/KarpelesLab/weak v0.1.1/go.mod h1:pzXsWs5f2bf+fpgHayTlBE1qJpO3MpJKo5sRaLu1XNw= -github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf h1:FPsprx82rdrX2jiKyS17BH6IrTmUBYqZa/CXT4uvb+I= -github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf/go.mod h1:peYoMncQljjNS6tZwI9WVyQB3qZS6u79/N3mBOcnd3I= github.com/agnivade/wasmbrowsertest v0.3.1/go.mod h1:zQt6ZTdl338xxRaMW395qccVE2eQm0SjC/SDz0mPWQI= github.com/chromedp/cdproto v0.0.0-20190614062957-d6d2f92b486d/go.mod h1:S8mB5wY3vV+vRIzf39xDXsw3XKYewW9X6rW2aEmkrSw= github.com/chromedp/cdproto v0.0.0-20190621002710-8cbd498dd7a0/go.mod h1:S8mB5wY3vV+vRIzf39xDXsw3XKYewW9X6rW2aEmkrSw= @@ -45,8 +43,10 @@ github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDS github.com/knq/sysutil v0.0.0-20181215143952-f05b59f0f307/go.mod h1:BjPj+aVjl9FW/cCGiF3nGh5v+9Gd3VCgBQbod/GlMaQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/mailru/easyjson v0.0.0-20190403194419-1ea4449da983/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -68,8 +68,6 @@ github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjM github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/sqweek/dialog v0.0.0-20260123140253-64c163d53aac h1:/QqP+ajFMma4hNWQyBDVaQQhz9Z1kDyXScNWMO3owx0= -github.com/sqweek/dialog v0.0.0-20260123140253-64c163d53aac/go.mod h1:/qNPSY91qTz/8TgHEMioAUc6q7+3SOybeKczHMXFcXw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/gtk-helpers.go b/gtk-helpers.go index 318a5d5..b08edab 100644 --- a/gtk-helpers.go +++ b/gtk-helpers.go @@ -43,16 +43,13 @@ func switchToTab(jid string) { u := v.(stanza.Presence) var mu MucUser + var ocu OccupantID u.Get(&mu) + u.Get(&ocu) nick_label := gtk.NewLabel(Jid.MustParse(u.From).Resourcepart()) - affil_label := gtk.NewLabel(mu.MucUserItem.Affiliation) - - // nick_label.SetHAlign(gtk.AlignStart) - // affil_label.SetHAlign(gtk.AlignEnd) userbox.Append(nick_label) - userbox.Append(affil_label) gen.Append(userbox) return true diff --git a/gtk-message.go b/gtk-message.go index 4d192da..7aa3e3f 100644 --- a/gtk-message.go +++ b/gtk-message.go @@ -71,6 +71,7 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter { } ocu := OccupantID{} + m.Get(&ocu) authorBox := gtk.NewBox(gtk.OrientationHorizontal, 10) @@ -78,10 +79,32 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter { // im := newImageFromPath("debug.png") // authorBox.Append(im) - im := getAvatar(m.From, ocu.ID) - im.SetPixelSize(40) - im.AddCSSClass("author_img") - authorBox.Append(im) + + mo, _ := mucmembers.Load(jid.MustParse(m.From).Bare().String()) + mm := mo.(mucUnit) + mmm := mm.Members + mmmm, ok := mmm.Load(ocu.ID) + if ok { + pres := mmmm.(stanza.Presence) + + var vu VCardUpdate + pres.Get(&vu) + if vu.Photo != "" { + im := getAvatar(m.From, vu.Photo) + im.SetPixelSize(40) + im.AddCSSClass("author_img") + authorBox.Append(im) + } else { + im := newImageFromPath("debug.png") + im.SetPixelSize(40) + im.AddCSSClass("author_img") + } + } else { + im := newImageFromPath("debug.png") + im.SetPixelSize(40) + im.AddCSSClass("author_img") + } + al := gtk.NewLabel(jid.MustParse(m.From).Resourcepart()) al.AddCSSClass("author") @@ -128,6 +151,11 @@ func getAvatar(j, hash string) *gtk.Image { // TODO: This function probably shou return newImageFromPath("debug.png") } + if hash == "" { + fmt.Println("Hash is nil!") + return newImageFromPath("debug.png") + } + hash = filepath.Join(p, sanitizefilename.Sanitize(hash)) _, err = os.ReadFile(hash) diff --git a/main.go b/main.go index 4c09a50..13b2f67 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,8 @@ import ( _ "embed" "encoding/xml" "runtime" + + "github.com/kr/pretty" ) var loadedConfig lambdaConfig @@ -170,6 +172,8 @@ func main() { return } + pretty.Println(presence) + var mu MucUser var ocu OccupantID @@ -252,7 +256,7 @@ func activate(app *gtk.Application) { app.SetMenubar(gio.NewMenu()) window.SetTitle("Lambda") - window.AddCSSClass("ssd") + window.Window.AddCSSClass("ssd") menu := gtk.NewBox(gtk.OrientationHorizontal, 0) /* f_menu := gtk.NewMenuButton() @@ -333,16 +337,20 @@ func activate(app *gtk.Application) { en.SetHExpand(true) + m_entry := gtk.NewEntry() + entry_box.Append(en) entry_box.Append(b) + entry_box.Append(m_entry) + debug_btn := gtk.NewButtonWithLabel("Join muc") debug_btn.ConnectClicked(func() { t := en.Text() _, ok := tabs[t] if !ok { - err := joinMuc(client, clientroot.Session.BindJid, t, loadedConfig.Nick) + err := joinMuc(client, clientroot.Session.BindJid, t, m_entry.Text()) if err != nil { panic(err) } diff --git a/xmpp-vcard.go b/xmpp-vcard.go index 879ce35..d8abd38 100644 --- a/xmpp-vcard.go +++ b/xmpp-vcard.go @@ -14,6 +14,12 @@ type VCard struct { ResultSet *stanza.ResultSet `xml:"set,omitempty"` } +type VCardUpdate struct { + stanza.PresExtension + XMLName xml.Name `xml:"vcard-temp:x:update x"` + Photo string `xml:"photo"` +} + func (v *VCard) Namespace() string { return v.XMLName.Space } @@ -29,4 +35,5 @@ type Photo struct { func init() { stanza.TypeRegistry.MapExtension(stanza.PKTIQ, xml.Name{Space: "vcard-temp", Local: "vCard"}, VCard{}) + stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{Space: "vcard-temp:x:update", Local: "x"}, VCardUpdate{}) }