| 24 | } |
| 25 | |
| 26 | func Init(db *badger.DB, project string) tea.Model { |
| 27 | input := textinput.NewModel() |
| 28 | input.Prompt = "❯ " |
| 29 | input.Placeholder = "New task description..." |
| 30 | input.Focus() |
| 31 | input.CharLimit = 250 |
| 32 | input.Width = 50 |
| 33 | |
| 34 | keymap := &keymap{ |
| 35 | Esc: key.NewBinding( |
| 36 | key.WithKeys("esc"), |
| 37 | key.WithHelp("esc", "cancel"), |
| 38 | ), |
| 39 | Enter: key.NewBinding( |
| 40 | key.WithKeys("enter"), |
| 41 | key.WithHelp("enter", "start/stop timer"), |
| 42 | ), |
| 43 | CtrlC: key.NewBinding( |
| 44 | key.WithKeys("ctrl+c"), |
| 45 | key.WithHelp("ctrl+c", "exit"), |
| 46 | ), |
| 47 | R: key.NewBinding( |
| 48 | key.WithKeys("r"), |
| 49 | key.WithHelp("r", "restart"), |
| 50 | ), |
| 51 | } |
| 52 | |
| 53 | l := list.NewModel([]list.Item{}, list.NewDefaultDelegate(), 0, 0) |
| 54 | l.Title = "tasks" |
| 55 | l.SetSpinner(spinner.Pulse) |
| 56 | l.DisableQuitKeybindings() |
| 57 | l.AdditionalShortHelpKeys = func() []key.Binding { |
| 58 | return []key.Binding{ |
| 59 | keymap.Esc, |
| 60 | keymap.Enter, |
| 61 | keymap.CtrlC, |
| 62 | keymap.R, |
| 63 | } |
| 64 | } |
| 65 | |
| 66 | return mainModel{ |
| 67 | list: l, |
| 68 | timer: projectTimerModel{}, |
| 69 | db: db, |
| 70 | input: input, |
| 71 | project: project, |
| 72 | keymap: keymap, |
| 73 | } |
| 74 | } |
| 75 | |
| 76 | type mainModel struct { |
| 77 | input textinput.Model |