chore: merge branch 'master' into v2-exp

This commit is contained in:
Ayman Bagabas
2024-11-12 17:05:54 -05:00
3 changed files with 67 additions and 6 deletions
+11 -1
View File
@@ -74,6 +74,8 @@ type TickMsg struct {
// Timeout returns whether or not this tick is a timeout tick. You can
// alternatively listen for TimeoutMsg.
Timeout bool
tag int
}
// TimeoutMsg is a message that is sent once when the timer times out.
@@ -93,6 +95,7 @@ type Model struct {
Interval time.Duration
id int
tag int
running bool
}
@@ -149,6 +152,13 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
break
}
// If a tag is set, and it's not the one we expect, reject the message.
// This prevents the ticker from receiving too many messages and
// thus ticking too fast.
if msg.tag > 0 && msg.tag != m.tag {
return m, nil
}
m.Timeout -= m.Interval
return m, tea.Batch(m.tick(), m.timedout())
}
@@ -178,7 +188,7 @@ func (m *Model) Toggle() tea.Cmd {
func (m Model) tick() tea.Cmd {
return tea.Tick(m.Interval, func(_ time.Time) tea.Msg {
return TickMsg{ID: m.id, Timeout: m.Timedout()}
return TickMsg{ID: m.id, tag: m.tag, Timeout: m.Timedout()}
})
}