diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-03 23:58:35 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-03 23:58:35 +0200 |
| commit | f33b95c7a26a9ac131719baaff391a0cdedb5072 (patch) | |
| tree | 9fa05061a79c73d21f47834967fc699f337099fa | |
| parent | 461ba1af2801dbae3661ce4edc2f470ceb70e792 (diff) | |
timer: extract shared elapsed state helper
| -rw-r--r-- | internal/timer/operations.go | 51 |
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 { |
