some qol stuff
This commit is contained in:
@@ -143,6 +143,9 @@ var jabberBytes []byte
|
|||||||
//go:embed assets/fail.png
|
//go:embed assets/fail.png
|
||||||
var failBytes []byte
|
var failBytes []byte
|
||||||
|
|
||||||
|
//go:embed assets/please_wait.gif
|
||||||
|
var pleaseWaitBytes []byte
|
||||||
|
|
||||||
func loadAsset(key string, data []byte) {
|
func loadAsset(key string, data []byte) {
|
||||||
loader := gdkpixbuf.NewPixbufLoader()
|
loader := gdkpixbuf.NewPixbufLoader()
|
||||||
loader.Write(data)
|
loader.Write(data)
|
||||||
@@ -197,6 +200,7 @@ func init() {
|
|||||||
"moderate": moderateBytes,
|
"moderate": moderateBytes,
|
||||||
"jabber": jabberBytes,
|
"jabber": jabberBytes,
|
||||||
"fail": failBytes,
|
"fail": failBytes,
|
||||||
|
"please_wait": pleaseWaitBytes,
|
||||||
} {
|
} {
|
||||||
loadAsset(key, data)
|
loadAsset(key, data)
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
@@ -136,9 +136,11 @@ func switchToTab(jid string, w *gtk.Window) {
|
|||||||
u.Get(&ocu)
|
u.Get(&ocu)
|
||||||
|
|
||||||
if mu.MucUserItem.Role == "moderator" {
|
if mu.MucUserItem.Role == "moderator" {
|
||||||
|
gen.Prepend(gtk.NewSeparator(gtk.OrientationHorizontal))
|
||||||
gen.Prepend(userbox)
|
gen.Prepend(userbox)
|
||||||
} else {
|
} else {
|
||||||
gen.Append(userbox)
|
gen.Append(userbox)
|
||||||
|
gen.Append(gtk.NewSeparator(gtk.OrientationHorizontal))
|
||||||
}
|
}
|
||||||
|
|
||||||
//id := ocu.ID
|
//id := ocu.ID
|
||||||
@@ -147,6 +149,10 @@ func switchToTab(jid string, w *gtk.Window) {
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
nick_label := gtk.NewLabel(JidMustParse(u.From).Resource)
|
nick_label := gtk.NewLabel(JidMustParse(u.From).Resource)
|
||||||
|
custom_nick, ok := loadedConfig.CustomNicks[ocu.ID]
|
||||||
|
if ok {
|
||||||
|
nick_label.SetText(custom_nick)
|
||||||
|
}
|
||||||
nick_label.SetEllipsize(pango.EllipsizeEnd)
|
nick_label.SetEllipsize(pango.EllipsizeEnd)
|
||||||
nick_label.AddCSSClass(mu.MucUserItem.Role)
|
nick_label.AddCSSClass(mu.MucUserItem.Role)
|
||||||
if mu.MucUserItem.Role == "visitor" {
|
if mu.MucUserItem.Role == "visitor" {
|
||||||
@@ -366,6 +372,10 @@ func switchToTab(jid string, w *gtk.Window) {
|
|||||||
win.SetDefaultSize(400, 400)
|
win.SetDefaultSize(400, 400)
|
||||||
profile_box := gtk.NewBox(gtk.OrientationVertical, 0)
|
profile_box := gtk.NewBox(gtk.OrientationVertical, 0)
|
||||||
nick := gtk.NewLabel(JidMustParse(u.From).Resource)
|
nick := gtk.NewLabel(JidMustParse(u.From).Resource)
|
||||||
|
if custom_nick != "" {
|
||||||
|
nick.SetText(custom_nick)
|
||||||
|
}
|
||||||
|
|
||||||
ver_text := gtk.NewLabel(loadedLocale["gettingVersion"])
|
ver_text := gtk.NewLabel(loadedLocale["gettingVersion"])
|
||||||
ver_text.AddCSSClass("visitor")
|
ver_text.AddCSSClass("visitor")
|
||||||
|
|
||||||
@@ -418,6 +428,13 @@ func switchToTab(jid string, w *gtk.Window) {
|
|||||||
profile_box.Append(gtk.NewLabel(loadedLocale["affiliatedAs"] + mu.MucUserItem.Affiliation))
|
profile_box.Append(gtk.NewLabel(loadedLocale["affiliatedAs"] + mu.MucUserItem.Affiliation))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ocu.ID != "" {
|
||||||
|
ocu_label := gtk.NewLabel(ocu.ID)
|
||||||
|
ocu_label.AddCSSClass("jid")
|
||||||
|
ocu_label.SetSelectable(true)
|
||||||
|
profile_box.Append(ocu_label)
|
||||||
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
|
|
||||||
myIQ, err := stanza.NewIQ(stanza.Attrs{
|
myIQ, err := stanza.NewIQ(stanza.Attrs{
|
||||||
|
|||||||
+10
-5
@@ -149,6 +149,14 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
|
|||||||
|
|
||||||
m.Get(&ocu)
|
m.Get(&ocu)
|
||||||
id := JidMustParse(m.From).Resource
|
id := JidMustParse(m.From).Resource
|
||||||
|
custom_nick, ok := loadedConfig.CustomNicks[ocu.ID]
|
||||||
|
if ok {
|
||||||
|
id = custom_nick
|
||||||
|
}
|
||||||
|
|
||||||
|
if id == "" {
|
||||||
|
id = JidMustParse(m.From).Bare()
|
||||||
|
}
|
||||||
|
|
||||||
if loadedConfig.CompactMode {
|
if loadedConfig.CompactMode {
|
||||||
al := gtk.NewLabel(id)
|
al := gtk.NewLabel(id)
|
||||||
@@ -174,11 +182,8 @@ func generateMessageWidget(p stanza.Packet) gtk.Widgetter {
|
|||||||
} else {
|
} else {
|
||||||
authorBox := gtk.NewBox(gtk.OrientationHorizontal, 10)
|
authorBox := gtk.NewBox(gtk.OrientationHorizontal, 10)
|
||||||
contentBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
contentBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
||||||
n := JidMustParse(m.From).Resource
|
|
||||||
if n == "" {
|
al := gtk.NewLabel(id)
|
||||||
n = JidMustParse(m.From).Resource
|
|
||||||
}
|
|
||||||
al := gtk.NewLabel(n)
|
|
||||||
al.AddCSSClass("author")
|
al.AddCSSClass("author")
|
||||||
al.SetSelectable(true)
|
al.SetSelectable(true)
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/go-analyze/charts"
|
"github.com/go-analyze/charts"
|
||||||
"golang.org/x/net/html/charset"
|
"golang.org/x/net/html/charset"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"github.com/google/uuid"
|
||||||
|
|
||||||
"github.com/BurntSushi/toml"
|
"github.com/BurntSushi/toml"
|
||||||
"gosrc.io/xmpp"
|
"gosrc.io/xmpp"
|
||||||
@@ -176,6 +177,8 @@ func main() {
|
|||||||
{Var: "http://jabber.org/protocol/muc"},
|
{Var: "http://jabber.org/protocol/muc"},
|
||||||
{Var: "λ"},
|
{Var: "λ"},
|
||||||
{Var: "urn:xmpp:attention:0"},
|
{Var: "urn:xmpp:attention:0"},
|
||||||
|
{Var: "urn:xmpp:carbons:2"},
|
||||||
|
{Var: "urn:xmpp:ping"},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
iqResp.Payload = &payload
|
iqResp.Payload = &payload
|
||||||
@@ -433,9 +436,10 @@ func main() {
|
|||||||
pingStatus.AddCSSClass("pending")
|
pingStatus.AddCSSClass("pending")
|
||||||
before := time.Now()
|
before := time.Now()
|
||||||
iq := new(stanza.IQ)
|
iq := new(stanza.IQ)
|
||||||
|
iq.Id = uuid.New().String()
|
||||||
iq.From = clientroot.Session.BindJid
|
iq.From = clientroot.Session.BindJid
|
||||||
iq.To = iq.From
|
|
||||||
iq.Type = "get"
|
iq.Type = "get"
|
||||||
|
iq.Payload = &Ping{}
|
||||||
|
|
||||||
ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
|
ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
|
||||||
mychan, err := client.SendIQ(ctx, iq)
|
mychan, err := client.SendIQ(ctx, iq)
|
||||||
@@ -1161,6 +1165,7 @@ func activate(app *gtk.Application) {
|
|||||||
|
|
||||||
i := (gtk.NewImageFromPaintable(clientAssets["chart_bar"]))
|
i := (gtk.NewImageFromPaintable(clientAssets["chart_bar"]))
|
||||||
i.AddCSSClass("icon")
|
i.AddCSSClass("icon")
|
||||||
|
|
||||||
pBox.Append(i)
|
pBox.Append(i)
|
||||||
pingStatus = gtk.NewLabel("...")
|
pingStatus = gtk.NewLabel("...")
|
||||||
pBox.Append(pingStatus)
|
pBox.Append(pingStatus)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ type lambdaConfig struct {
|
|||||||
Debug bool
|
Debug bool
|
||||||
ShowPresenceUpdates bool
|
ShowPresenceUpdates bool
|
||||||
CompactMode bool
|
CompactMode bool
|
||||||
|
CustomNicks map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
type mucUnit struct {
|
type mucUnit struct {
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
// Implementation of XEP-0199: XMPP Ping
|
||||||
|
// https://xmpp.org/extensions/xep-0199.html
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/xml"
|
||||||
|
"gosrc.io/xmpp/stanza"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Ping struct {
|
||||||
|
stanza.IQ
|
||||||
|
XMLName xml.Name `xml:"urn:xmpp:ping ping"`
|
||||||
|
ResultSet *stanza.ResultSet `xml:"set,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Ping) Namespace() string {
|
||||||
|
return v.XMLName.Space
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Ping) GetSet() *stanza.ResultSet {
|
||||||
|
return v.ResultSet
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
stanza.TypeRegistry.MapExtension(stanza.PKTIQ, xml.Name{Space: "urn:xmpp:ping", Local: "ping"}, Ping{})
|
||||||
|
}
|
||||||
@@ -51,3 +51,4 @@ func init() {
|
|||||||
stanza.TypeRegistry.MapExtension(stanza.PKTIQ, xml.Name{Space: "vcard-temp", Local: "vCard"}, VCard{})
|
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{})
|
stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{Space: "vcard-temp:x:update", Local: "x"}, VCardUpdate{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user