From 9a0929a3ae4f12a3c8e4b178b930519e2cce8cb5 Mon Sep 17 00:00:00 2001 From: Ruchi Mulik Date: Mon, 8 Dec 2025 04:49:53 +0530 Subject: [PATCH] fix(detail): avoid backend auto-start; save user-selected start only --- .../controllers/detail_route_controller.dart | 36 +++++++++++++------ lib/app/utils/taskfunctions/draft.dart | 1 - lib/app/utils/taskfunctions/modify.dart | 1 + 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/app/modules/detailRoute/controllers/detail_route_controller.dart b/lib/app/modules/detailRoute/controllers/detail_route_controller.dart index 9f5d9ed3..4820e881 100644 --- a/lib/app/modules/detailRoute/controllers/detail_route_controller.dart +++ b/lib/app/modules/detailRoute/controllers/detail_route_controller.dart @@ -17,6 +17,9 @@ class DetailRouteController extends GetxController { var onEdit = false.obs; var isReadOnly = false.obs; + // Track whether user explicitly selected a start date + bool startEdited = false; + @override void onInit() { super.onInit(); @@ -50,13 +53,19 @@ class DetailRouteController extends GetxController { } if (name == 'start') { - debugPrint('Start Value Changed to $newValue'); + startEdited = true; // MARK AS USER-SELECTED startValue.value = newValue; } initValues(); } Future saveChanges() async { + // If start was never edited AND backend auto-generated it (start == entry) + if (!startEdited && + modify.original.start != null && + modify.original.start!.isAtSameMomentAs(modify.original.entry)) { + modify.set('start', null); // remove auto start + } var now = DateTime.now().toUtc(); modify.save(modified: () => now); onEdit.value = false; @@ -106,7 +115,20 @@ class DetailRouteController extends GetxController { statusValue.value = modify.draft.status; entryValue.value = modify.draft.entry; modifiedValue.value = modify.draft.modified; - startValue.value ??= null; + final originalStart = modify.original.start; + final originalEntry = modify.original.entry; + + final backendAutoStart = (originalStart != null && + originalStart.isAtSameMomentAs(originalEntry)); + + // START DATE LOGIC (THE FIX) + if (startEdited) { + startValue.value = modify.draft.start; + } else if (backendAutoStart) { + startValue.value = null; // Do not show backend auto start + } else { + startValue.value = modify.draft.start; // Existing meaningful start + } endValue.value = modify.draft.end; dueValue.value = modify.draft.due; waitValue.value = modify.draft.wait; @@ -148,15 +170,7 @@ class DetailRouteController extends GetxController { const Duration(milliseconds: 500), () { SaveTourStatus.getDetailsTourStatus().then((value) => { - if (value == false) - { - tutorialCoachMark.show(context: context), - } - else - { - // ignore: avoid_print - print('User has seen this page'), - } + if (!value) {tutorialCoachMark.show(context: context)} }); }, ); diff --git a/lib/app/utils/taskfunctions/draft.dart b/lib/app/utils/taskfunctions/draft.dart index ce6db637..dfebeac3 100644 --- a/lib/app/utils/taskfunctions/draft.dart +++ b/lib/app/utils/taskfunctions/draft.dart @@ -1,4 +1,3 @@ - import 'package:taskwarrior/app/models/models.dart'; import 'package:taskwarrior/app/utils/taskfunctions/patch.dart'; diff --git a/lib/app/utils/taskfunctions/modify.dart b/lib/app/utils/taskfunctions/modify.dart index 8ff98855..dd3ef3bc 100644 --- a/lib/app/utils/taskfunctions/modify.dart +++ b/lib/app/utils/taskfunctions/modify.dart @@ -22,6 +22,7 @@ class Modify { Task get draft => _draft.draft; int get id => _draft.original.id!; + Task get original => _draft.original; Map get changes { var result = {};