From 6e6b80c9b362cc6922b822032a06eb1b9c91a8fb Mon Sep 17 00:00:00 2001 From: Erik Winter Date: Wed, 27 Dec 2023 08:25:09 +0100 Subject: [PATCH] move navigation to tab updates --- Makefile | 6 +++++- cmd/terminal-client/tui/basemodel.go | 15 ++++----------- cmd/terminal-client/tui/tabemdb.go | 6 ++++++ cmd/terminal-client/tui/tabtmdb.go | 6 ++++++ cmd/terminal-client/tui/tui.go | 16 ++++++++++++++++ 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index f813207..a2389bf 100644 --- a/Makefile +++ b/Makefile @@ -2,9 +2,13 @@ run-api: go run ./cmd/api-service/service.go -apikey localOnly -run-tui: +run-tui-local: EMDB_BASE_URL=http://localhost:8085/ EMDB_API_KEY=hoi go run ./cmd/terminal-client/main.go +run-tui: + go run ./cmd/terminal-client/main.go + + build-api: go build -o emdb-api ./cmd/api-service/service.go diff --git a/cmd/terminal-client/tui/basemodel.go b/cmd/terminal-client/tui/basemodel.go index bf974ee..20ca649 100644 --- a/cmd/terminal-client/tui/basemodel.go +++ b/cmd/terminal-client/tui/basemodel.go @@ -45,17 +45,10 @@ func (m baseModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { var cmds []tea.Cmd switch msg := msg.(type) { - case tea.KeyMsg: - switch msg.String() { - case "ctrl+c", "q", "esc": - return m, tea.Quit - case "right", "tab": - m.tabs.Next() - case "left", "shift+tab": - m.tabs.Previous() - default: - cmds = append(cmds, m.tabs.Update(msg)) - } + case NextTabSelected: + m.tabs.Next() + case PrevTabSelected: + m.tabs.Previous() case tea.WindowSizeMsg: m.windowSize = msg if !m.initialized { diff --git a/cmd/terminal-client/tui/tabemdb.go b/cmd/terminal-client/tui/tabemdb.go index 014f45a..14de257 100644 --- a/cmd/terminal-client/tui/tabemdb.go +++ b/cmd/terminal-client/tui/tabemdb.go @@ -128,6 +128,12 @@ func (m tabEMDB) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } default: switch msg.String() { + case "ctrl+c", "q", "esc": + return m, tea.Quit + case "right", "tab": + cmds = append(cmds, SelectNextTab()) + case "left", "shift+tab": + cmds = append(cmds, SelectPrevTab()) case "up": m.list, cmd = m.list.Update(msg) cmds = append(cmds, cmd) diff --git a/cmd/terminal-client/tui/tabtmdb.go b/cmd/terminal-client/tui/tabtmdb.go index 9f35197..6863a53 100644 --- a/cmd/terminal-client/tui/tabtmdb.go +++ b/cmd/terminal-client/tui/tabtmdb.go @@ -51,6 +51,12 @@ func (m tabTMDB) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.focused = "search" case tea.KeyMsg: switch msg.String() { + case "ctrl+c", "q", "esc": + return m, tea.Quit + case "right", "tab": + cmds = append(cmds, SelectNextTab()) + case "left", "shift+tab": + cmds = append(cmds, SelectPrevTab()) case "enter": switch m.focused { case "search": diff --git a/cmd/terminal-client/tui/tui.go b/cmd/terminal-client/tui/tui.go index 8b4def0..7412c1b 100644 --- a/cmd/terminal-client/tui/tui.go +++ b/cmd/terminal-client/tui/tui.go @@ -36,6 +36,22 @@ func (l *Logger) Log(s string) { l.Lines = append(l.Lines, s) } type NewMovie Movie +type NextTabSelected struct{} + +func SelectNextTab() tea.Cmd { + return func() tea.Msg { + return NextTabSelected{} + } +} + +type PrevTabSelected struct{} + +func SelectPrevTab() tea.Cmd { + return func() tea.Msg { + return PrevTabSelected{} + } +} + func New(emdb *client.EMDB, tmdb *client.TMDB, logger *Logger) (*tea.Program, error) { logViewport := viewport.New(0, 0) logViewport.KeyMap = viewport.KeyMap{}