this commit was sponsored by mizkif
This commit is contained in:
@@ -150,6 +150,9 @@ var pleaseWaitBytes []byte
|
|||||||
//go:embed assets/update.png
|
//go:embed assets/update.png
|
||||||
var updateBytes []byte
|
var updateBytes []byte
|
||||||
|
|
||||||
|
//go:embed assets/solar.png
|
||||||
|
var solarBytes []byte
|
||||||
|
|
||||||
// var clientAssets map[string]gdk.Paintabler = make(map[string]gdk.Paintabler)
|
// var clientAssets map[string]gdk.Paintabler = make(map[string]gdk.Paintabler)
|
||||||
var clientAssets sync.Map
|
var clientAssets sync.Map
|
||||||
|
|
||||||
@@ -223,6 +226,7 @@ func init() {
|
|||||||
"fail": failBytes,
|
"fail": failBytes,
|
||||||
"please_wait": pleaseWaitBytes,
|
"please_wait": pleaseWaitBytes,
|
||||||
"update": updateBytes,
|
"update": updateBytes,
|
||||||
|
"solar": solarBytes,
|
||||||
} {
|
} {
|
||||||
loadAsset(key, data)
|
loadAsset(key, data)
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 543 B |
+4
-1
@@ -573,7 +573,10 @@ func switchToTab(jid string, w *gtk.Window) {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
headerBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
headerBox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
||||||
if i >= 500 {
|
|
||||||
|
if i >= 1000 {
|
||||||
|
headerBox.Append(gtk.NewImageFromPaintable(clientAssetsLoad("solar")))
|
||||||
|
} else if i >= 500 {
|
||||||
headerBox.Append(gtk.NewImageFromPaintable(clientAssetsLoad("world")))
|
headerBox.Append(gtk.NewImageFromPaintable(clientAssetsLoad("world")))
|
||||||
} else if i >= 50 {
|
} else if i >= 50 {
|
||||||
headerBox.Append(gtk.NewImageFromPaintable(clientAssetsLoad("large_group")))
|
headerBox.Append(gtk.NewImageFromPaintable(clientAssetsLoad("large_group")))
|
||||||
|
|||||||
@@ -362,9 +362,9 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tab, ok := tabs.Load(muc)
|
tab, ok := tabs.Load(muc)
|
||||||
typed_tab := tab.(*chatTab)
|
typed_tab, ok2 := tab.(*chatTab)
|
||||||
|
|
||||||
if ok {
|
if ok && ok2 {
|
||||||
typed_tab.msgs.Append(b)
|
typed_tab.msgs.Append(b)
|
||||||
if current == muc {
|
if current == muc {
|
||||||
scrollToBottomAfterUpdate(scroller)
|
scrollToBottomAfterUpdate(scroller)
|
||||||
@@ -1171,6 +1171,7 @@ func activate(app *gtk.Application) {
|
|||||||
i := gtk.NewPictureForPaintable(gdk.NewTextureForPixbuf(loader.Pixbuf()))
|
i := gtk.NewPictureForPaintable(gdk.NewTextureForPixbuf(loader.Pixbuf()))
|
||||||
win := gtk.NewWindow()
|
win := gtk.NewWindow()
|
||||||
win.SetDefaultSize(600, 400)
|
win.SetDefaultSize(600, 400)
|
||||||
|
win.SetResizable(false)
|
||||||
win.SetTitle(loadedLocale["pingGraphTitle"])
|
win.SetTitle(loadedLocale["pingGraphTitle"])
|
||||||
box := gtk.NewBox(gtk.OrientationVertical, 0)
|
box := gtk.NewBox(gtk.OrientationVertical, 0)
|
||||||
box.Append(i)
|
box.Append(i)
|
||||||
@@ -1236,13 +1237,6 @@ func activate(app *gtk.Application) {
|
|||||||
|
|
||||||
sendtxt := func() {
|
sendtxt := func() {
|
||||||
t := message_en.Text()
|
t := message_en.Text()
|
||||||
if t == "" {
|
|
||||||
dialog := >k.AlertDialog{}
|
|
||||||
dialog.SetDetail("detail")
|
|
||||||
dialog.SetMessage("message")
|
|
||||||
dialog.SetButtons([]string{"yes, no"})
|
|
||||||
dialog.Choose(context.TODO(), &window.Window, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
message_type := stanza.MessageTypeChat
|
message_type := stanza.MessageTypeChat
|
||||||
tab, ok := tabs.Load(current)
|
tab, ok := tabs.Load(current)
|
||||||
@@ -1253,6 +1247,51 @@ func activate(app *gtk.Application) {
|
|||||||
typed_tab := tab.(*chatTab)
|
typed_tab := tab.(*chatTab)
|
||||||
if typed_tab.isMuc {
|
if typed_tab.isMuc {
|
||||||
message_type = stanza.MessageTypeGroupchat
|
message_type = stanza.MessageTypeGroupchat
|
||||||
|
|
||||||
|
// First check if the user is a visitor
|
||||||
|
mu, ok := mucmembers.Load(current)
|
||||||
|
if ok {
|
||||||
|
typed_mu := mu.(mucUnit)
|
||||||
|
typed_mu.Members.Range(func(k, v any) bool {
|
||||||
|
user, ok := v.(stanza.Presence)
|
||||||
|
if ok {
|
||||||
|
var mui MucUser
|
||||||
|
ok = user.Get(&mui)
|
||||||
|
if ok && mui.MucUserItem.JID != "" {
|
||||||
|
if JidMustParse(mui.MucUserItem.JID).Bare() == JidMustParse(clientroot.Session.BindJid).Bare() {
|
||||||
|
if mui.MucUserItem.Role == "visitor" {
|
||||||
|
win := gtk.NewWindow()
|
||||||
|
win.SetDefaultSize(1,1)
|
||||||
|
box := gtk.NewBox(gtk.OrientationVertical, 5)
|
||||||
|
txt := gtk.NewLabel("You are a visitor and do not have voice.\nWould you like to request voice from the moderators of this MUC?")
|
||||||
|
btn := gtk.NewButtonWithLabel("Request voice")
|
||||||
|
btn.ConnectClicked(func (){
|
||||||
|
sendVoiceRequest(client, current)
|
||||||
|
win.SetVisible(false)
|
||||||
|
})
|
||||||
|
dismiss := gtk.NewButtonWithLabel("Dismiss")
|
||||||
|
dismiss.ConnectClicked(func() {
|
||||||
|
win.SetVisible(false)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
box.Append(txt)
|
||||||
|
box.Append(btn)
|
||||||
|
box.Append(dismiss)
|
||||||
|
|
||||||
|
win.SetChild(box)
|
||||||
|
win.SetResizable(false)
|
||||||
|
win.SetVisible(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exts := []stanza.MsgExtension{}
|
exts := []stanza.MsgExtension{}
|
||||||
@@ -1278,6 +1317,8 @@ func activate(app *gtk.Application) {
|
|||||||
exts = append(exts, new_attention)
|
exts = append(exts, new_attention)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
err := sendMessage(client, current, message_type, t, "", "", exts)
|
err := sendMessage(client, current, message_type, t, "", "", exts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
showErrorDialog(err, &window.Window)
|
showErrorDialog(err, &window.Window)
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
var lambda_version string = "1"
|
var lambda_version string = "2"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"gosrc.io/xmpp"
|
"gosrc.io/xmpp"
|
||||||
"gosrc.io/xmpp/stanza"
|
"gosrc.io/xmpp/stanza"
|
||||||
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
// This file has small functions that can be used to do XMPP stuff without writing tons of boilerplate
|
// This file has small functions that can be used to do XMPP stuff without writing tons of boilerplate
|
||||||
@@ -116,3 +117,27 @@ func JidMustParse(s string) *stanza.Jid {
|
|||||||
}
|
}
|
||||||
return j
|
return j
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func sendVoiceRequest(c xmpp.Sender, sendTo string) error {
|
||||||
|
err := c.SendRaw(fmt.Sprintf(`
|
||||||
|
<message from='%s'
|
||||||
|
id='yd53c486'
|
||||||
|
to='%s'>
|
||||||
|
<x xmlns='jabber:x:data' type='submit'>
|
||||||
|
<field var='FORM_TYPE'>
|
||||||
|
<value>http://jabber.org/protocol/muc#request</value>
|
||||||
|
</field>
|
||||||
|
<field var='muc#role'
|
||||||
|
type='list-single'
|
||||||
|
label='Requested role'>
|
||||||
|
<value>participant</value>
|
||||||
|
</field>
|
||||||
|
</x>
|
||||||
|
</message>
|
||||||
|
`, clientroot.Session.BindJid, sendTo))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user