From ec85f8737783bce11ad27f4000bc104a1f937df1 Mon Sep 17 00:00:00 2001 From: Arindy Date: Sun, 28 Dec 2025 19:46:00 +0100 Subject: [PATCH] Refactor `date` and `clock` widgets to simplify periodic updates and remove redundant ticker logic. --- widgets/clock.go | 39 +++++++++++++++------------------------ widgets/date.go | 16 ++++------------ 2 files changed, 19 insertions(+), 36 deletions(-) diff --git a/widgets/clock.go b/widgets/clock.go index 2694a30..7878e09 100644 --- a/widgets/clock.go +++ b/widgets/clock.go @@ -26,32 +26,23 @@ func createClock(ctx context.Context, _ terminalapi.Terminal, _ interface{}) wid widget := util.PanicOnErrorWithResult(segmentdisplay.New()) go util.Periodic(ctx, util.RedrawInterval, func() error { - ticker := time.NewTicker(1 * time.Second) - defer ticker.Stop() - for { - select { - case <-ticker.C: - now := time.Now() - nowStr := now.Format("15 04") - parts := strings.Split(nowStr, " ") + now := time.Now() + nowStr := now.Format("15 04") + parts := strings.Split(nowStr, " ") - spacer := " " - if now.Second()%2 == 0 { - spacer = ":" - } - chunks := []*segmentdisplay.TextChunk{ - segmentdisplay.NewChunk(parts[0], segmentdisplay.WriteCellOpts(cell.FgColor(cell.ColorWhite))), - segmentdisplay.NewChunk(spacer), - segmentdisplay.NewChunk(parts[1], segmentdisplay.WriteCellOpts(cell.FgColor(cell.ColorWhite))), - } - if err := widget.Write(chunks, segmentdisplay.AlignHorizontal(align.HorizontalCenter), segmentdisplay.AlignVertical(align.VerticalBottom)); err != nil { - panic(err) - } - - case <-ctx.Done(): - return nil - } + spacer := " " + if now.Second()%2 == 0 { + spacer = ":" } + chunks := []*segmentdisplay.TextChunk{ + segmentdisplay.NewChunk(parts[0], segmentdisplay.WriteCellOpts(cell.FgColor(cell.ColorWhite))), + segmentdisplay.NewChunk(spacer), + segmentdisplay.NewChunk(parts[1], segmentdisplay.WriteCellOpts(cell.FgColor(cell.ColorWhite))), + } + if err := widget.Write(chunks, segmentdisplay.AlignHorizontal(align.HorizontalCenter), segmentdisplay.AlignVertical(align.VerticalBottom)); err != nil { + return err + } + return nil }) return widget } diff --git a/widgets/date.go b/widgets/date.go index 9f00fec..1b02aba 100644 --- a/widgets/date.go +++ b/widgets/date.go @@ -22,20 +22,12 @@ func createDate(ctx context.Context, _ terminalapi.Terminal, _ interface{}) widg widget := util.PanicOnErrorWithResult(text.New()) go util.Periodic(ctx, 1*time.Second, func() error { - ticker := time.NewTicker(1 * time.Second) - defer ticker.Stop() - for { - select { - case <-ticker.C: - now := time.Now() - if err := widget.Write(now.Format("Monday 2.1.2006"), text.WriteReplace()); err != nil { - panic(err) - } + now := time.Now() - case <-ctx.Done(): - return nil - } + if err := widget.Write(now.Format("Monday 2.1.2006"), text.WriteReplace()); err != nil { + return err } + return nil }) return widget