diff options
Diffstat (limited to 'internal/tui/keys.go')
-rw-r--r-- | internal/tui/keys.go | 74 |
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{ |