From 32f2ce19cc5e96cf34c8be1da9308412a4010383 Mon Sep 17 00:00:00 2001 From: demo Date: Fri, 29 May 2026 11:40:56 -0400 Subject: feat: add an "undo" command This puts a task back in the TODO state. Some refactoring here lets us reuse the same code for handling both cmdDo and cmdUndo. --- cmds.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'cmds.go') diff --git a/cmds.go b/cmds.go index 5791546..38be692 100644 --- a/cmds.go +++ b/cmds.go @@ -43,7 +43,7 @@ func (ctrl controller) cmdAdd(task string) error { }) } -func (ctrl controller) cmdDo(taskIndex int) error { +func (ctrl controller) toggleDo(taskIndex int, status bool) error { return ctrl.db.Update(func(tx *bbolt.Tx) error { taskBucket := tx.Bucket(ctrl.tasksBucketName) ttBytes := taskBucket.Get(itob(uint64(taskIndex))) @@ -53,7 +53,7 @@ func (ctrl controller) cmdDo(taskIndex int) error { return fmt.Errorf("can't unmarshal: %w", err) } - tt.Done = true + tt.Done = status buf, err := json.Marshal(tt) if err != nil { @@ -64,6 +64,14 @@ func (ctrl controller) cmdDo(taskIndex int) error { }) } +func (ctrl controller) cmdDo(taskIndex int) error { + return ctrl.toggleDo(taskIndex, true) +} + +func (ctrl controller) cmdUndo(taskIndex int) error { + return ctrl.toggleDo(taskIndex, false) +} + func (ctrl controller) cmdList() error { return ctrl.db.View(func(tx *bbolt.Tx) error { // Assume bucket exists and has keys -- cgit v1.2.3