(msg tea.Msg)
| 92 | } |
| 93 | |
| 94 | func (m mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { |
| 95 | var cmds []tea.Cmd |
| 96 | var cmd tea.Cmd |
| 97 | var newMsg tea.Msg |
| 98 | |
| 99 | m.list.DisableQuitKeybindings() |
| 100 | m.list.KeyMap.CursorUp.SetEnabled(!m.input.Focused() && !m.list.SettingFilter()) |
| 101 | m.list.KeyMap.CursorDown.SetEnabled(!m.input.Focused() && !m.list.SettingFilter()) |
| 102 | m.list.KeyMap.Filter.SetEnabled(!m.input.Focused() && !m.list.SettingFilter()) |
| 103 | m.keymap.Esc.SetEnabled(m.input.Focused()) |
| 104 | |
| 105 | switch msg := msg.(type) { |
| 106 | case errMsg: |
| 107 | log.Println("errMsg") |
| 108 | m.err = msg.error |
| 109 | case tea.WindowSizeMsg: |
| 110 | log.Println("tea.WindowSizeMsg") |
| 111 | top, right, bottom, left := listStyle.GetMargin() |
| 112 | m.list.SetSize(msg.Width-left-right, msg.Height-top-bottom) |
| 113 | case updateTaskListMsg: |
| 114 | log.Println("updateTaskListMsg") |
| 115 | cmds = append(cmds, m.list.StartSpinner(), updateTaskListCmd(m.db)) |
| 116 | case taskListUpdatedMsg: |
| 117 | log.Println("taskListUpdatedMsg") |
| 118 | items := make([]list.Item, 0, len(msg.tasks)) |
| 119 | for _, t := range msg.tasks { |
| 120 | items = append(items, item{ |
| 121 | title: t.Title, |
| 122 | start: t.StartAt, |
| 123 | end: t.EndAt, |
| 124 | }) |
| 125 | } |
| 126 | |
| 127 | m.list.StopSpinner() |
| 128 | m.list.ResetSelected() |
| 129 | m.list.ResetFilter() |
| 130 | cmds = append(cmds, m.list.SetItems(items), updateProjectTimerCmd(msg.tasks)) |
| 131 | case tea.KeyMsg: |
| 132 | if key.Matches(msg, m.keymap.CtrlC) { |
| 133 | log.Println("tea.KeyMsg -> ctrl+c") |
| 134 | return m, tea.Sequentially(closeTasksCmd(m.db), tea.Quit) |
| 135 | } |
| 136 | |
| 137 | if m.list.SettingFilter() { |
| 138 | log.Println("tea.KeyMsg -> settingFilter") |
| 139 | break |
| 140 | } |
| 141 | |
| 142 | if m.input.Focused() { |
| 143 | if key.Matches(msg, m.keymap.Esc) { |
| 144 | log.Println("tea.KeyMsg -> input.Focused -> esc") |
| 145 | m.input.Blur() |
| 146 | cmds = append(cmds, tea.Sequentially( |
| 147 | closeTasksCmd(m.db), |
| 148 | updateTaskListCmd(m.db)), |
| 149 | ) |
| 150 | } |
| 151 | if key.Matches(msg, m.keymap.Enter) { |
no test coverage detected