summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-03 23:58:35 +0200
committerPaul Buetow <paul@buetow.org>2026-03-03 23:58:35 +0200
commitf33b95c7a26a9ac131719baaff391a0cdedb5072 (patch)
tree9fa05061a79c73d21f47834967fc699f337099fa
parent461ba1af2801dbae3661ce4edc2f470ceb70e792 (diff)
timer: extract shared elapsed state helper
-rw-r--r--internal/timer/operations.go51
1 files changed, 24 insertions, 27 deletions
diff --git a/internal/timer/operations.go b/internal/timer/operations.go
index ae45304..993ad12 100644
--- a/internal/timer/operations.go
+++ b/internal/timer/operations.go
@@ -68,19 +68,31 @@ func StopTimer() (string, error) {
return "Timer stopped.", nil
}
+func getElapsed() (state State, elapsed time.Duration, err error) {
+ state, err = LoadState()
+ if err != nil {
+ return state, 0, fmt.Errorf("error loading state: %w", err)
+ }
+
+ elapsed = state.ElapsedTime
+ if state.Running {
+ elapsed += time.Since(state.StartTime)
+ }
+
+ return state, elapsed, nil
+}
+
func GetStatus() (string, error) {
- state, err := LoadState()
+ state, elapsed, err := getElapsed()
if err != nil {
- return "", fmt.Errorf("error loading state: %w", err)
+ return "", err
}
if state.Running {
- elapsed := (state.ElapsedTime + time.Since(state.StartTime)).Round(time.Second)
- return fmt.Sprintf("Status: Running\nElapsed Time: %s", elapsed), nil
+ return fmt.Sprintf("Status: Running\nElapsed Time: %s", elapsed.Round(time.Second)), nil
}
- elapsed := state.ElapsedTime.Round(time.Second)
- return fmt.Sprintf("Status: Stopped\nElapsed Time: %s", elapsed), nil
+ return fmt.Sprintf("Status: Stopped\nElapsed Time: %s", elapsed.Round(time.Second)), nil
}
func ResetTimer() (string, error) {
@@ -101,42 +113,27 @@ func ResetTimer() (string, error) {
}
func GetRawStatus() (string, error) {
- state, err := LoadState()
+ _, elapsed, err := getElapsed()
if err != nil {
- return "", fmt.Errorf("error loading state: %w", err)
- }
-
- elapsed := state.ElapsedTime
- if state.Running {
- elapsed += time.Since(state.StartTime)
+ return "", err
}
return fmt.Sprintf("%f", elapsed.Seconds()), nil
}
func GetRawMinutesStatus() (string, error) {
- state, err := LoadState()
+ _, elapsed, err := getElapsed()
if err != nil {
- return "", fmt.Errorf("error loading state: %w", err)
- }
-
- elapsed := state.ElapsedTime
- if state.Running {
- elapsed += time.Since(state.StartTime)
+ return "", err
}
return fmt.Sprintf("%d", int(elapsed.Minutes())), nil
}
func GetPromptStatus() (string, error) {
- state, err := LoadState()
+ state, elapsed, err := getElapsed()
if err != nil {
- return "", fmt.Errorf("error loading state: %w", err)
- }
-
- elapsed := state.ElapsedTime
- if state.Running {
- elapsed += time.Since(state.StartTime)
+ return "", err
}
if elapsed == 0 {