From 4a77d7cbd53becc59fbd8430585f936e506dac5b Mon Sep 17 00:00:00 2001 From: ayn2op Date: Wed, 18 Jun 2025 18:56:03 -0400 Subject: [PATCH] build: upgrade tview to latest --- cmd/application.go | 33 +++++++++++++++++++-------------- cmd/message_input.go | 10 +++++----- cmd/messages_text.go | 9 ++++----- go.mod | 2 +- go.sum | 8 ++------ internal/login/form.go | 19 ++++++++++++------- 6 files changed, 43 insertions(+), 38 deletions(-) diff --git a/cmd/application.go b/cmd/application.go index c330a48..00d7578 100644 --- a/cmd/application.go +++ b/cmd/application.go @@ -12,6 +12,12 @@ import ( "github.com/zalando/go-keyring" ) +const ( + flexPageName = "flex" + mentionsListPageName = "mentionsList" + attachmentsListPageName = "attachmentsList" +) + type application struct { cfg *config.Config @@ -21,9 +27,6 @@ type application struct { guildsTree *guildsTree messagesText *messagesText messageInput *messageInput - - flexPage int - autocompletePage int } func newApplication(cfg *config.Config) *application { @@ -89,18 +92,20 @@ func (a *application) quit() { } func (a *application) init() { - a.pages.Clear() + a.pages.ClearPages() a.flex.Clear() - right := tview.NewFlex() - right.SetDirection(tview.FlexRow) - right.AddItem(a.messagesText, 0, 1, false) - right.AddItem(a.messageInput, 3, 1, false) + right := tview.NewFlex(). + SetDirection(tview.FlexRow). + AddItem(a.messagesText, 0, 1, false). + AddItem(a.messageInput, 3, 1, false) // The guilds tree is always focused first at start-up. - a.flex.AddItem(a.guildsTree, 0, 1, true) - a.flex.AddItem(right, 0, 4, false) - a.flexPage = a.pages.AddAndSwitchToPage(a.flex, true) - a.autocompletePage = a.pages.AddPage(a.messageInput.autocomplete, false, false) + a.flex. + AddItem(a.guildsTree, 0, 1, true). + AddItem(right, 0, 4, false) + a.pages. + AddAndSwitchToPage(flexPageName, a.flex, true). + AddPage(mentionsListPageName, a.messageInput.autocomplete, false, false) } func (a *application) onInputCapture(event *tcell.EventKey) *tcell.EventKey { @@ -119,11 +124,11 @@ func (a *application) onInputCapture(event *tcell.EventKey) *tcell.EventKey { func (a *application) onFlexInputCapture(event *tcell.EventKey) *tcell.EventKey { switch event.Name() { case a.cfg.Keys.FocusGuildsTree: - a.pages.HidePage(a.autocompletePage) + a.pages.HidePage(mentionsListPageName) a.SetFocus(app.guildsTree) return nil case a.cfg.Keys.FocusMessagesText: - a.pages.HidePage(a.autocompletePage) + a.pages.HidePage(mentionsListPageName) a.SetFocus(app.messagesText) return nil case a.cfg.Keys.FocusMessageInput: diff --git a/cmd/message_input.go b/cmd/message_input.go index 7a378c5..b401592 100644 --- a/cmd/message_input.go +++ b/cmd/message_input.go @@ -82,7 +82,7 @@ func (mi *messageInput) reset() { func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey { switch event.Name() { case mi.cfg.Keys.MessageInput.Send: - if app.pages.GetVisible(app.autocompletePage) { + if app.pages.GetVisibile(mentionsListPageName) { mi.tabComplete(false) return nil } @@ -94,7 +94,7 @@ func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey { mi.editor() return nil case mi.cfg.Keys.MessageInput.Cancel: - if app.pages.GetVisible(app.autocompletePage) { + if app.pages.GetVisibile(mentionsListPageName) { mi.stopTabCompletion() } else { mi.reset() @@ -107,7 +107,7 @@ func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey { } if mi.cfg.AutocompleteLimit > 0 { - if app.pages.GetVisible(app.autocompletePage) { + if app.pages.GetVisibile(mentionsListPageName) { count := mi.autocomplete.GetItemCount() cur := mi.autocomplete.GetCurrentItem() switch event.Name() { @@ -371,7 +371,7 @@ func (mi *messageInput) showMentionList(col int) { x += min(col, maxW-w) } l.SetRect(x, y, w, h) - app.pages.ShowPage(app.autocompletePage) + app.pages.ShowPage(mentionsListPageName) app.SetFocus(mi) } @@ -416,7 +416,7 @@ func (mi *messageInput) addAutocompleteItem(gID discord.GuildID, m *discord.Memb func (mi *messageInput) stopTabCompletion() { if mi.cfg.AutocompleteLimit > 0 { - app.pages.HidePage(app.autocompletePage) + app.pages.HidePage(mentionsListPageName) mi.autocomplete.Clear() app.SetFocus(mi) } diff --git a/cmd/messages_text.go b/cmd/messages_text.go index ab34c45..7b89c1f 100644 --- a/cmd/messages_text.go +++ b/cmd/messages_text.go @@ -38,8 +38,6 @@ type messagesText struct { count uint done chan struct{} } - - urlListPage int } func newMessagesText(cfg *config.Config) *messagesText { @@ -447,7 +445,7 @@ func extractURLs(content string) []string { func (mt *messagesText) showUrlSelector(urls []string, attachments []discord.Attachment) { done := func() { - app.pages.RemovePage(mt.urlListPage).SwitchToPage(app.flexPage) + app.pages.RemovePage(attachmentsListPageName).SwitchToPage(flexPageName) app.SetFocus(mt) } @@ -486,8 +484,9 @@ func (mt *messagesText) showUrlSelector(urls []string, attachments []discord.Att }) } - mt.urlListPage = app.pages.AddAndSwitchToPage(ui.Centered(list, 0, 0), true) - app.pages.ShowPage(app.flexPage) + app.pages. + AddAndSwitchToPage(attachmentsListPageName, ui.Centered(list, 0, 0), true). + ShowPage(flexPageName) } func openURL(url string) { diff --git a/go.mod b/go.mod index 8913ae2..0662c2b 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.3 require ( github.com/BurntSushi/toml v1.5.0 github.com/atotto/clipboard v0.1.4 - github.com/ayn2op/tview v0.0.0-20250615214508-b6d99d0bd2e0 + github.com/ayn2op/tview v0.0.0-20250618224732-91a1a2f06994 github.com/deckarep/gosx-notifier v0.0.0-20180201035817-e127226297fb github.com/diamondburned/arikawa/v3 v3.5.0 github.com/diamondburned/ningen/v3 v3.0.1-0.20250607192146-d6b46a4689a5 diff --git a/go.sum b/go.sum index 80aa207..0b485b4 100644 --- a/go.sum +++ b/go.sum @@ -25,10 +25,8 @@ github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/ayn2op/tview v0.0.0-20250615213508-2719974b344b h1:rTaFMJVkVySIJtIJnbE0fT7IcyhNBajPvNVGLAJ3kk4= -github.com/ayn2op/tview v0.0.0-20250615213508-2719974b344b/go.mod h1:PuMMP3J7SfW0jgAc1fdABOHJkoGbQIw3jejRAkl0API= -github.com/ayn2op/tview v0.0.0-20250615214508-b6d99d0bd2e0 h1:gmy5w73yKtOeFxSiFP1pERlOVi+9mwA4WIIgg96qzXg= -github.com/ayn2op/tview v0.0.0-20250615214508-b6d99d0bd2e0/go.mod h1:PuMMP3J7SfW0jgAc1fdABOHJkoGbQIw3jejRAkl0API= +github.com/ayn2op/tview v0.0.0-20250618224732-91a1a2f06994 h1:heK43Ba0uvQPH2BgJVFiB2G8vIJk1XocvFYCPfOSNhU= +github.com/ayn2op/tview v0.0.0-20250618224732-91a1a2f06994/go.mod h1:PuMMP3J7SfW0jgAc1fdABOHJkoGbQIw3jejRAkl0API= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -54,8 +52,6 @@ github.com/gdamore/encoding v1.0.1 h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uh github.com/gdamore/encoding v1.0.1/go.mod h1:0Z0cMFinngz9kS1QfMjCP8TY7em3bZYeeklsSDPivEo= github.com/gdamore/tcell/v2 v2.8.1 h1:KPNxyqclpWpWQlPLx6Xui1pMk8S+7+R37h3g07997NU= github.com/gdamore/tcell/v2 v2.8.1/go.mod h1:bj8ori1BG3OYMjmb3IklZVWfZUJ1UBQt9JXrOCOhGWw= -github.com/gen2brain/beeep v0.11.0 h1:ScADjlllAwqUIdEgosHXRmS0OEBTDtfGvIuLj2G/mlU= -github.com/gen2brain/beeep v0.11.0/go.mod h1:jQVvuwnLuwOcdctHn/uyh8horSBNJ8uGb9Cn2W4tvoc= github.com/gen2brain/beeep v0.11.1 h1:EbSIhrQZFDj1K2fzlMpAYlFOzV8YuNe721A58XcCTYI= github.com/gen2brain/beeep v0.11.1/go.mod h1:jQVvuwnLuwOcdctHn/uyh8horSBNJ8uGb9Cn2W4tvoc= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= diff --git a/internal/login/form.go b/internal/login/form.go index 2e05269..3e90e19 100644 --- a/internal/login/form.go +++ b/internal/login/form.go @@ -12,6 +12,11 @@ import ( "github.com/zalando/go-keyring" ) +const ( + formPageName = "form" + errorPageName = "error" +) + type DoneFn = func(token string) type Form struct { @@ -19,9 +24,6 @@ type Form struct { cfg *config.Config form *tview.Form done DoneFn - - formPage int - errPage int } func NewForm(cfg *config.Config, done DoneFn) *Form { @@ -37,7 +39,7 @@ func NewForm(cfg *config.Config, done DoneFn) *Form { AddPasswordField("Password", "", 0, 0, nil). AddPasswordField("Code (optional)", "", 0, 0, nil). AddButton("Login", f.login) - f.formPage = f.AddAndSwitchToPage(f.form, true) + f.AddAndSwitchToPage(formPageName, f.form, true) return f } @@ -93,8 +95,11 @@ func (f *Form) onError(err error) { SetText(err.Error()). AddButtons([]string{"Close"}). SetDoneFunc(func(_ int, _ string) { - f.RemovePage(f.errPage).SwitchToPage(f.formPage) + f. + RemovePage(errorPageName). + SwitchToPage(formPageName) }) - f.errPage = f.AddAndSwitchToPage(ui.Centered(modal, 0, 0), true) - f.ShowPage(f.formPage) + f. + AddAndSwitchToPage(errorPageName, ui.Centered(modal, 0, 0), true). + ShowPage(formPageName) }