Format code, remove use of Mellium JID parser, and add indicator for messages originating from WebXDC apps
This commit is contained in:
@@ -33,9 +33,9 @@ func generatePresenceWidget(p stanza.Packet) gtk.Widgetter {
|
||||
}
|
||||
}
|
||||
|
||||
return gtk.NewLabel(jid.MustParse(presence.From).Resourcepart() + " left the MUC")
|
||||
return gtk.NewLabel(JidMustParse(presence.From).Resource + " left the MUC")
|
||||
} else {
|
||||
return gtk.NewLabel(jid.MustParse(presence.From).Resourcepart() + " joined the MUC")
|
||||
return gtk.NewLabel(JidMustParse(presence.From).Resource + " joined the MUC")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,6 +140,7 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
|
||||
}
|
||||
|
||||
authorBox := gtk.NewBox(gtk.OrientationHorizontal, 10)
|
||||
|
||||
contentBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
||||
// im := newImageFromPath("debug.png")
|
||||
|
||||
@@ -180,6 +181,13 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
|
||||
}
|
||||
|
||||
authorBox.Append(al)
|
||||
|
||||
wxdc := XDCEl{}
|
||||
ok = m.Get(&wxdc)
|
||||
if ok {
|
||||
authorBox.Append(gtk.NewLabel("🎮"))
|
||||
}
|
||||
|
||||
mlabel := gtk.NewLabel(m.Body)
|
||||
mlabel.SetWrap(true)
|
||||
mlabel.SetSelectable(true)
|
||||
|
||||
31
main.go
31
main.go
@@ -22,9 +22,9 @@ import (
|
||||
_ "embed"
|
||||
"encoding/base64"
|
||||
"encoding/xml"
|
||||
"github.com/kr/pretty"
|
||||
"math/rand/v2"
|
||||
"runtime"
|
||||
"github.com/kr/pretty"
|
||||
)
|
||||
|
||||
var loadedConfig lambdaConfig
|
||||
@@ -282,10 +282,6 @@ func main() {
|
||||
glib.IdleAdd(func() {
|
||||
//uiQueue <- func() {
|
||||
b := gtk.NewBox(gtk.OrientationVertical, 0)
|
||||
ba, ok := generateMessageWidget(p).(*gtk.Box)
|
||||
if ok {
|
||||
b = ba
|
||||
}
|
||||
|
||||
tab, ok := tabs.Load(originator)
|
||||
typed_tab := tab.(*chatTab)
|
||||
@@ -296,6 +292,11 @@ func main() {
|
||||
} else {
|
||||
fmt.Println("Got message when the tab does not exist!")
|
||||
}
|
||||
|
||||
ba, ok := generateMessageWidget(p).(*gtk.Box)
|
||||
if ok {
|
||||
b.Append(ba)
|
||||
}
|
||||
//}
|
||||
})
|
||||
})
|
||||
@@ -336,6 +337,26 @@ func main() {
|
||||
typed_unit := unit.(mucUnit)
|
||||
|
||||
if presence.Type != "unavailable" {
|
||||
_, ok := typed_unit.Members.Load(id)
|
||||
if !ok {
|
||||
glib.IdleAdd(func() {
|
||||
b := gtk.NewLabel("")
|
||||
ba, ok := generatePresenceWidget(p).(*gtk.Label)
|
||||
if ok {
|
||||
b = ba
|
||||
}
|
||||
|
||||
tab, ok := tabs.Load(muc)
|
||||
typed_tab := tab.(*chatTab)
|
||||
|
||||
if ok {
|
||||
typed_tab.msgs.Append(b)
|
||||
scrollToBottomAfterUpdate(scroller)
|
||||
} else {
|
||||
fmt.Println("Got message when the tab does not exist!")
|
||||
}
|
||||
})
|
||||
}
|
||||
typed_unit.Members.Store(id, presence)
|
||||
} else {
|
||||
typed_unit.Members.Delete(id)
|
||||
|
||||
21
xmpp-webxdc.go
Normal file
21
xmpp-webxdc.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package main
|
||||
|
||||
// Implementation of XEP-0491: WebXDC
|
||||
// https://xmpp.org/extensions/xep-0491.html
|
||||
|
||||
import (
|
||||
"encoding/xml"
|
||||
"gosrc.io/xmpp/stanza"
|
||||
)
|
||||
|
||||
type XDCEl struct {
|
||||
stanza.MsgExtension
|
||||
XMLName xml.Name `xml:"urn:xmpp:webxdc:0 x"`
|
||||
Document string `xml:"document"`
|
||||
Summary string `xml:"summary"`
|
||||
Payload string `xml:"urn:xmpp:json:0 json"` // TODO: Independent JSOn container type (XEP-0335)
|
||||
}
|
||||
|
||||
func init() {
|
||||
stanza.TypeRegistry.MapExtension(stanza.PKTMessage, xml.Name{Space: "urn:xmpp:webxdc:0", Local: "x"}, XDCEl{})
|
||||
}
|
||||
Reference in New Issue
Block a user