summaryrefslogtreecommitdiff
path: root/internal/tui/keys.go
diff options
context:
space:
mode:
authorT <t@tjp.lol>2025-09-29 15:04:44 -0600
committerT <t@tjp.lol>2025-09-30 11:40:45 -0600
commit7ba68d333bc20b5795ccfd3870546a05eee60470 (patch)
tree12dc4b017803b7d01844fd42b9e3be281cbbd986 /internal/tui/keys.go
parentbce8dbb58165e443902d9dae3909225ef42630c4 (diff)
Support for archiving clients and projects.HEADmain
Diffstat (limited to 'internal/tui/keys.go')
-rw-r--r--internal/tui/keys.go74
1 files changed, 70 insertions, 4 deletions
diff --git a/internal/tui/keys.go b/internal/tui/keys.go
index c4ccad3..c0c5605 100644
--- a/internal/tui/keys.go
+++ b/internal/tui/keys.go
@@ -128,6 +128,75 @@ var Bindings map[KeyBindingScope]map[string]KeyBinding = map[KeyBindingScope]map
},
Result: func(*AppModel) tea.Cmd { return filterHistoryFromProjectBox() },
},
+ "a": KeyBinding{
+ Key: "a",
+ Description: func(m AppModel) string {
+ visibleClients := m.projectsBox.visibleClients()
+ if len(visibleClients) == 0 {
+ return ""
+ }
+ if m.projectsBox.selectedClient >= len(visibleClients) {
+ return ""
+ }
+ client := visibleClients[m.projectsBox.selectedClient]
+
+ if m.projectsBox.selectedProject != nil {
+ // Project selected
+ visibleProjects := m.projectsBox.visibleProjects(client.ID)
+ if *m.projectsBox.selectedProject >= len(visibleProjects) {
+ return ""
+ }
+ project := visibleProjects[*m.projectsBox.selectedProject]
+ if project.Archived != 0 {
+ return "Unarchive Project"
+ }
+ return "Archive Project"
+ }
+
+ // Client selected
+ if client.Archived != 0 {
+ return "Unarchive Client"
+ }
+ return "Archive Client"
+ },
+ Result: func(m *AppModel) tea.Cmd {
+ clientID, projectID := m.projectsBox.getSelectedIDs()
+ visibleClients := m.projectsBox.visibleClients()
+ if len(visibleClients) == 0 {
+ return nil
+ }
+ client := visibleClients[m.projectsBox.selectedClient]
+
+ if m.projectsBox.selectedProject != nil {
+ // Project selected
+ visibleProjects := m.projectsBox.visibleProjects(client.ID)
+ project := visibleProjects[*m.projectsBox.selectedProject]
+ if project.Archived != 0 {
+ return unarchiveClientOrProject(clientID, projectID)
+ }
+ return archiveClientOrProject(clientID, projectID)
+ }
+
+ // Client selected
+ if client.Archived != 0 {
+ return unarchiveClientOrProject(clientID, projectID)
+ }
+ return archiveClientOrProject(clientID, projectID)
+ },
+ },
+ ".": KeyBinding{
+ Key: ".",
+ Description: func(m AppModel) string {
+ if m.projectsBox.showArchived {
+ return "Hide Archived"
+ }
+ return "Show Archived"
+ },
+ Result: func(m *AppModel) tea.Cmd {
+ clientID, projectID := m.projectsBox.getSelectedIDs()
+ return toggleShowArchived(clientID, projectID)
+ },
+ },
"down": KeyBinding{
Key: "down",
Description: func(AppModel) string { return "Down" },
@@ -270,10 +339,7 @@ var Bindings map[KeyBindingScope]map[string]KeyBinding = map[KeyBindingScope]map
Key: "Enter",
Description: func(AppModel) string { return "Submit" },
Result: func(am *AppModel) tea.Cmd {
- return tea.Sequence(
- closeModal(),
- am.modalBox.SubmitForm(*am),
- )
+ return am.modalBox.SubmitForm(*am)
},
},
"esc": KeyBinding{