diff options
Diffstat (limited to 'internal')
-rw-r--r-- | internal/notices/notices.go | 7 | ||||
-rw-r--r-- | internal/switcher/switcher.go | 10 |
2 files changed, 11 insertions, 6 deletions
diff --git a/internal/notices/notices.go b/internal/notices/notices.go index 4fbd807..40b5d1f 100644 --- a/internal/notices/notices.go +++ b/internal/notices/notices.go @@ -58,3 +58,10 @@ func (m Model) New(msg string) tea.Cmd { return NoticeExpiryMsg(uuid) } } + +func (m Model) Reset(uuid string) tea.Cmd { + return func() tea.Msg { + time.Sleep(expiryDelay * time.Second) + return NoticeExpiryMsg(uuid) + } +} diff --git a/internal/switcher/switcher.go b/internal/switcher/switcher.go index ec5c47a..860bf81 100644 --- a/internal/switcher/switcher.go +++ b/internal/switcher/switcher.go @@ -66,12 +66,10 @@ func (m *Model) NewNotice(msg string) tea.Cmd { func (m Model) Init() tea.Cmd { cmds := []tea.Cmd{} - // Make a backup of notices received before the program starts - // then reinitialize them with a proper expiration time. - noticeBackup := m.notices.Notices - m.notices = notices.New() - for _, v := range noticeBackup { - cmds = append(cmds, m.NewNotice(v)) + // The NoticeExpiryMsg is never sent to bubbletea by a tea.Cmd for the initial notices + // That's why we need to manually reset them here. Otherwise, they would never expire. + for k := range m.notices.Notices { + cmds = append(cmds, m.notices.Reset(k)) } for _, p := range m.pickers { |