From 94b6786c7c8339def1bcee07c243ef066c90b74c Mon Sep 17 00:00:00 2001 From: Sebastian Mark Date: Wed, 30 Oct 2024 07:46:29 +0100 Subject: [PATCH] feat: implement asynchronous timer start MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add new StartAsync method to Timer for non-blocking execution - use new method in RunPomodoro() 🤖 --- internal/pomodoro/pomodoro.go | 6 +++--- internal/pomodoro/timer.go | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/internal/pomodoro/pomodoro.go b/internal/pomodoro/pomodoro.go index 8228249..a7bcc00 100644 --- a/internal/pomodoro/pomodoro.go +++ b/internal/pomodoro/pomodoro.go @@ -42,7 +42,7 @@ func RunPomodoro() { // Work shared.State.Mode = "Work" - go timer.Start(pomodoroConfig.Work) + timer.StartAsync(pomodoroConfig.Work) if !waitForTimer(timer) { break } @@ -50,13 +50,13 @@ func RunPomodoro() { // Breaks if session < pomodoroConfig.Sessions { shared.State.Mode = "ShortBreak" - go timer.Start(pomodoroConfig.ShortBreak) + timer.StartAsync(pomodoroConfig.ShortBreak) if !waitForTimer(timer) { break } } else { // last phase, prepare for finish shared.State.Mode = "LongBreak" - go timer.Start(pomodoroConfig.LongBreak) + timer.StartAsync(pomodoroConfig.LongBreak) if !waitForTimer(timer) { break } diff --git a/internal/pomodoro/timer.go b/internal/pomodoro/timer.go index 09a50ee..11b1070 100644 --- a/internal/pomodoro/timer.go +++ b/internal/pomodoro/timer.go @@ -24,7 +24,12 @@ func (t Timer) Init() Timer { } } -// Start the timer +// Start the timer (goroutine) +func (t *Timer) StartAsync(duration int) { + go t.Start(duration) +} + +// Start the timer (blocking) func (t *Timer) Start(duration int) { tick := time.NewTicker(time.Second) for timeLeft := duration; timeLeft > 0; {