Add hat icon, change some CSS and remove all reply support

This commit is contained in:
2026-02-08 09:44:45 +00:00
parent 589101c292
commit 713cb24508
7 changed files with 118 additions and 74 deletions

View File

@@ -6,8 +6,8 @@ import (
"context"
"encoding/base64"
"fmt"
"github.com/diamondburned/gotk4/pkg/gtk/v4"
"github.com/diamondburned/gotk4/pkg/gdk/v4"
"github.com/diamondburned/gotk4/pkg/gtk/v4"
"github.com/google/uuid"
"github.com/jacoblockett/sanitizefilename"
"github.com/jasonlovesdoggo/gopen"
@@ -54,9 +54,9 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
return b
}
indicator := stanza.StateComposing{}
ok = m.Get(&indicator)
if ok { // TODO: Display typing indicator in a stat bar or something similar
composing := stanza.StateComposing{}
ok = m.Get(&composing)
if ok {
b := gtk.NewBox(gtk.OrientationHorizontal, 0)
b.Append(gtk.NewLabel(fmt.Sprintf("%s is typing...", JidMustParse(m.From).Resource)))
return b
@@ -72,7 +72,6 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
return error_box
}
sid := StanzaID{}
m.Get(&sid)
@@ -80,7 +79,6 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
gesture := gtk.NewGestureClick()
gesture.SetButton(3) // Right click
popover := gtk.NewPopover()
popover.SetParent(mainBox)
popover.SetHasArrow(false)
@@ -94,7 +92,7 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
like.SetLabel(v)
like.SetHExpand(true)
like.ConnectClicked(func() {
fmt.Println("licked") // TODO: Implement proper support for reactions via extension
fmt.Println("licked") // TODO: Implement proper support for reactions via extension
client.SendRaw(fmt.Sprintf(`
<message from='%s' to='%s' id='%s' type='%s'>
<reactions id='%s' xmlns='urn:xmpp:reactions:0'>
@@ -109,9 +107,9 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
rc_box.Append(reactions)
if m.Type == stanza.MessageTypeGroupchat {
moderate := gtk.NewButtonWithLabel("Moderate") // TODO: Implement proper support for moderations via extension
moderate.ConnectClicked(func() {
client.SendRaw(fmt.Sprintf(`
moderate := gtk.NewButtonWithLabel("Moderate") // TODO: Implement proper support for moderations via extension
moderate.ConnectClicked(func() {
client.SendRaw(fmt.Sprintf(`
<iq type='set' to='%s' id='%s'>
<moderate id='%s' xmlns='urn:xmpp:message-moderate:1'>
<retract xmlns='urn:xmpp-message-retract:1'/>
@@ -119,11 +117,10 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
</moderate>
</iq>
`, jid.MustParse(m.From).Bare().String(), uuid.New().String(), sid.ID))
})
rc_box.Append(moderate)
})
rc_box.Append(moderate)
}
popover.SetChild(rc_box)
gesture.Connect("pressed", func(n_press, x, y int) {
@@ -134,14 +131,6 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
mainBox.AddController(gesture)
reply := Reply{}
ok = m.Get(&reply)
if ok {
replyBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
replyBox.Append(gtk.NewLabel("↱ " + jid.MustParse(reply.To).Resourcepart()))
mainBox.Append(replyBox)
}
ocu := OccupantID{}
m.Get(&ocu)
@@ -190,7 +179,6 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
al.SetText(al.Text() + " whispers")
}
authorBox.Append(al)
mlabel := gtk.NewLabel(m.Body)
mlabel.SetWrap(true)
@@ -230,7 +218,7 @@ func getVAdjustment(scrolledWindow *gtk.ScrolledWindow) *gtk.Adjustment {
func getAvatar(j, hash string) *gtk.Image { // TODO: This function probably shouldn't be here, and should probably be in xmpp-helpers or somewhere similar.
p, err := ensureCache()
if err != nil {
return gtk.NewImageFromPaintable(clientAssets["DefaultAvatar"])
return gtk.NewImageFromPaintable(clientAssets["DefaultAvatar"])
}
if hash == "" {
@@ -267,7 +255,7 @@ func getAvatar(j, hash string) *gtk.Image { // TODO: This function probably shou
result := <-mychan
card, ok := result.Payload.(*VCard)
if !ok {
return gtk.NewImageFromPaintable(clientAssets["DefaultAvatar"])
return gtk.NewImageFromPaintable(clientAssets["DefaultAvatar"])
}
base64_data := card.Photo.Binval