forked from sunglocto/pi-im
Respect JoinBookmarks config field, add name changing to bookmarks and fix a crash
This commit is contained in:
2
go.mod
2
go.mod
@@ -8,7 +8,7 @@ require (
|
|||||||
github.com/makeworld-the-better-one/go-isemoji v1.3.0
|
github.com/makeworld-the-better-one/go-isemoji v1.3.0
|
||||||
github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d
|
github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d
|
||||||
github.com/shreve/musicwand v0.0.1
|
github.com/shreve/musicwand v0.0.1
|
||||||
github.com/sunglocto/oasis-sdk v0.0.0-20251128095406-3c003b830815
|
github.com/sunglocto/oasis-sdk v0.0.0-20251128101950-083ea4658d9c
|
||||||
mellium.im/xmpp v0.22.0
|
mellium.im/xmpp v0.22.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -80,6 +80,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
|
|||||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/sunglocto/oasis-sdk v0.0.0-20251128095406-3c003b830815 h1:HsI7kxYauygjRK15Iwf3FlZnU8XJwRPSmbtoNfeyBYk=
|
github.com/sunglocto/oasis-sdk v0.0.0-20251128095406-3c003b830815 h1:HsI7kxYauygjRK15Iwf3FlZnU8XJwRPSmbtoNfeyBYk=
|
||||||
github.com/sunglocto/oasis-sdk v0.0.0-20251128095406-3c003b830815/go.mod h1:Y5iPruMLvqNwGVqB+n/+wylQjCTPKQx37I/PyLWhuzk=
|
github.com/sunglocto/oasis-sdk v0.0.0-20251128095406-3c003b830815/go.mod h1:Y5iPruMLvqNwGVqB+n/+wylQjCTPKQx37I/PyLWhuzk=
|
||||||
|
github.com/sunglocto/oasis-sdk v0.0.0-20251128100941-f53b1dabbcac h1:pVarwnSbjNSDpeQer/SERztTEpkl6Cnb5xuyxXmb50k=
|
||||||
|
github.com/sunglocto/oasis-sdk v0.0.0-20251128100941-f53b1dabbcac/go.mod h1:Y5iPruMLvqNwGVqB+n/+wylQjCTPKQx37I/PyLWhuzk=
|
||||||
|
github.com/sunglocto/oasis-sdk v0.0.0-20251128101950-083ea4658d9c h1:peWSGIl0xBvx3sJR3+kHV1xOe1X8dbQ9xtvEXyXogCo=
|
||||||
|
github.com/sunglocto/oasis-sdk v0.0.0-20251128101950-083ea4658d9c/go.mod h1:Y5iPruMLvqNwGVqB+n/+wylQjCTPKQx37I/PyLWhuzk=
|
||||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||||
github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
|
github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
|
||||||
github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
|
github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
|
||||||
|
|||||||
45
main.go
45
main.go
@@ -259,7 +259,12 @@ func CreateUITab(chatJidStr string) ChatTabUI {
|
|||||||
content.SetText(msgContent)
|
content.SetText(msgContent)
|
||||||
if chatTabs[chatJidStr].Messages[i].ReplyID != "PICLIENT:UNAVAILABLE" {
|
if chatTabs[chatJidStr].Messages[i].ReplyID != "PICLIENT:UNAVAILABLE" {
|
||||||
reply := chatTabs[chatJidStr].Messages[i].Raw.Reply
|
reply := chatTabs[chatJidStr].Messages[i].Raw.Reply
|
||||||
guy := jid.MustParse(reply.To).Resourcepart()
|
j, err := jid.Parse(reply.To)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("ERR: " + err.Error()) // FIXME
|
||||||
|
return
|
||||||
|
}
|
||||||
|
guy := j.Resourcepart()
|
||||||
// TODO: EXPERIMENTALLY GET REPLIED TO TEXT
|
// TODO: EXPERIMENTALLY GET REPLIED TO TEXT
|
||||||
|
|
||||||
for i := len(chatTabs[chatJidStr].Messages) - 1; i >= 0; i-- {
|
for i := len(chatTabs[chatJidStr].Messages) - 1; i >= 0; i-- {
|
||||||
@@ -669,6 +674,7 @@ func main() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
client.SetPresenceHandler(func(client *oasisSdk.XmppClient, from jid.JID, p oasisSdk.UserPresence) {
|
client.SetPresenceHandler(func(client *oasisSdk.XmppClient, from jid.JID, p oasisSdk.UserPresence) {
|
||||||
|
log.Println(p.Type)
|
||||||
bareAcc := from.Bare()
|
bareAcc := from.Bare()
|
||||||
tab, ok := chatTabs[bareAcc.String()]
|
tab, ok := chatTabs[bareAcc.String()]
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -683,6 +689,9 @@ func main() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
client.SetBookmarkHandler(false, func(client *oasisSdk.XmppClient, bookmark bookmarks.Channel) {
|
client.SetBookmarkHandler(false, func(client *oasisSdk.XmppClient, bookmark bookmarks.Channel) {
|
||||||
|
if !config.JoinBookmarks {
|
||||||
|
return
|
||||||
|
}
|
||||||
// FIXME
|
// FIXME
|
||||||
if bookmark.JID.String() == "conversations-offtopic-reloaded@conference.trashserver.net" {
|
if bookmark.JID.String() == "conversations-offtopic-reloaded@conference.trashserver.net" {
|
||||||
return
|
return
|
||||||
@@ -1048,8 +1057,9 @@ func main() {
|
|||||||
bookmarks := client.BookmarkCache()
|
bookmarks := client.BookmarkCache()
|
||||||
box := container.NewVBox()
|
box := container.NewVBox()
|
||||||
box.Add(widget.NewRichTextFromMarkdown("# Manage Bookmarks"))
|
box.Add(widget.NewRichTextFromMarkdown("# Manage Bookmarks"))
|
||||||
|
box.Add(widget.NewLabel(fmt.Sprintf("%d bookmarks", len(bookmarks))))
|
||||||
for address, bookmark := range bookmarks {
|
for address, bookmark := range bookmarks {
|
||||||
bookmarkWidget := container.NewGridWithColumns(5)
|
bookmarkWidget := container.NewGridWithColumns(7)
|
||||||
|
|
||||||
nameLabel := widget.NewLabel(bookmark.Name)
|
nameLabel := widget.NewLabel(bookmark.Name)
|
||||||
nameLabel.Wrapping = fyne.TextWrapBreak
|
nameLabel.Wrapping = fyne.TextWrapBreak
|
||||||
@@ -1064,6 +1074,7 @@ func main() {
|
|||||||
var autojoinCheck *widget.Check
|
var autojoinCheck *widget.Check
|
||||||
var deleteBookmarkButton *widget.Button
|
var deleteBookmarkButton *widget.Button
|
||||||
var joinRoomButton *widget.Button
|
var joinRoomButton *widget.Button
|
||||||
|
var setNick *widget.Button
|
||||||
joinRoomButton = widget.NewButtonWithIcon("Join", theme.AccountIcon(), func() {
|
joinRoomButton = widget.NewButtonWithIcon("Join", theme.AccountIcon(), func() {
|
||||||
fyne.Do(func() { joinRoomButton.Disable() })
|
fyne.Do(func() { joinRoomButton.Disable() })
|
||||||
go func() {
|
go func() {
|
||||||
@@ -1117,9 +1128,32 @@ func main() {
|
|||||||
}()
|
}()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
nickEntry := widget.NewEntry()
|
||||||
|
nickEntry.SetText(bookmark.Nick)
|
||||||
|
|
||||||
|
setNick = widget.NewButton("Set nick", func() {
|
||||||
|
go func() {
|
||||||
|
fyne.Do(func() {setNick.Disable()})
|
||||||
|
newNick := nickEntry.Text
|
||||||
|
bookmark.Nick = newNick
|
||||||
|
err := client.PublishBookmark(bookmark, context.TODO())
|
||||||
|
if err != nil {
|
||||||
|
fyne.Do(func() {
|
||||||
|
setNick.Enable()
|
||||||
|
dialog.ShowError(err, w)
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
client.RefreshBookmarks(false)
|
||||||
|
fyne.Do(func() {setNick.Enable()})
|
||||||
|
}()
|
||||||
|
})
|
||||||
|
|
||||||
bookmarkWidget.Add(autojoinCheck)
|
bookmarkWidget.Add(autojoinCheck)
|
||||||
bookmarkWidget.Add(deleteBookmarkButton)
|
bookmarkWidget.Add(deleteBookmarkButton)
|
||||||
bookmarkWidget.Add(joinRoomButton)
|
bookmarkWidget.Add(joinRoomButton)
|
||||||
|
bookmarkWidget.Add(nickEntry)
|
||||||
|
bookmarkWidget.Add(setNick)
|
||||||
|
|
||||||
box.Add(bookmarkWidget)
|
box.Add(bookmarkWidget)
|
||||||
}
|
}
|
||||||
@@ -1485,10 +1519,13 @@ func main() {
|
|||||||
if tab.isMuc {
|
if tab.isMuc {
|
||||||
nameLabel := widget.NewRichTextFromMarkdown("# " + activeChatJid)
|
nameLabel := widget.NewRichTextFromMarkdown("# " + activeChatJid)
|
||||||
nameLabel.Truncation = fyne.TextTruncateEllipsis
|
nameLabel.Truncation = fyne.TextTruncateEllipsis
|
||||||
box := container.NewVBox(nameLabel, widget.NewLabel(fmt.Sprintf("%d members ", len(tab.Members))))
|
memberLabel := widget.NewLabel(fmt.Sprintf("%d members ", len(tab.Members)))
|
||||||
|
memberLabel.Truncation = fyne.TextTruncateEllipsis
|
||||||
|
box := container.NewVBox(nameLabel, )
|
||||||
chatSidebar.Objects = []fyne.CanvasObject{}
|
chatSidebar.Objects = []fyne.CanvasObject{}
|
||||||
|
|
||||||
for name, p := range tab.Members {
|
for name, p := range tab.Members {
|
||||||
|
log.Println(string(p.Type))
|
||||||
gen, _ := identicon.New("github", 5, 3)
|
gen, _ := identicon.New("github", 5, 3)
|
||||||
userjid, err := jid.Parse(name)
|
userjid, err := jid.Parse(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1503,6 +1540,7 @@ func main() {
|
|||||||
mention := func() {
|
mention := func() {
|
||||||
entry.SetText(fmt.Sprintf("%s %s", entry.Text, nickname))
|
entry.SetText(fmt.Sprintf("%s %s", entry.Text, nickname))
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("ERROR: " + err.Error())
|
fmt.Println("ERROR: " + err.Error())
|
||||||
box.Add(container.NewHBox(widget.NewLabel(nickname), widget.NewButton("Mention", mention)))
|
box.Add(container.NewHBox(widget.NewLabel(nickname), widget.NewButton("Mention", mention)))
|
||||||
@@ -1513,6 +1551,7 @@ func main() {
|
|||||||
imageWidget.Refresh()
|
imageWidget.Refresh()
|
||||||
nickLabel := widget.NewLabel(nickname)
|
nickLabel := widget.NewLabel(nickname)
|
||||||
nickLabel.Selectable = true
|
nickLabel.Selectable = true
|
||||||
|
nickLabel.Truncation = fyne.TextTruncateClip
|
||||||
|
|
||||||
box.Add(container.NewHBox(imageWidget, nickLabel))
|
box.Add(container.NewHBox(imageWidget, nickLabel))
|
||||||
if p.Status != "" {
|
if p.Status != "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user