diff --git a/app/task/[id].tsx b/app/task/[id].tsx index cab1134..5e610f1 100644 --- a/app/task/[id].tsx +++ b/app/task/[id].tsx @@ -25,6 +25,7 @@ import { colors } from '@/src/theme/colors'; import { useSettingsStore } from '@/src/stores/useSettingsStore'; import { isValidUUID } from '@/src/lib/validation'; import { getPriorityOptions } from '@/src/lib/priority'; +import { goBack } from '@/src/lib/navigation'; import { RECURRENCE_OPTIONS } from '@/src/lib/recurrence'; import { getTaskById, @@ -126,8 +127,9 @@ export default function TaskDetailScreen() { listId: selectedListId, }); await setTagsForTask(task.id, selectedTagIds); - router.back(); + goBack(router); } catch { + // Save failed — stay on screen so user can retry setSaving(false); } }; @@ -141,7 +143,7 @@ export default function TaskDetailScreen() { onPress: async () => { await deleteTask(id!); Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium); - router.back(); + goBack(router); }, }, ]); @@ -185,7 +187,7 @@ export default function TaskDetailScreen() { - router.back()} className="p-2.5" hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}> + goBack(router)} className="p-2.5" hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}> diff --git a/app/task/new.tsx b/app/task/new.tsx index 7789690..d707179 100644 --- a/app/task/new.tsx +++ b/app/task/new.tsx @@ -27,6 +27,7 @@ import { getInboxId, getAllLists } from '@/src/db/repository/lists'; import { getAllTags, setTagsForTask } from '@/src/db/repository/tags'; import { getPriorityOptions } from '@/src/lib/priority'; import { RECURRENCE_OPTIONS } from '@/src/lib/recurrence'; +import { goBack } from '@/src/lib/navigation'; import TagChip from '@/src/components/task/TagChip'; const ICON_MAP: Record = { @@ -83,7 +84,7 @@ export default function NewTaskScreen() { for (const sub of pendingSubtasks) { await createTask({ title: sub, listId: selectedListId, parentId: taskId }); } - router.back(); + goBack(router); } catch { // FK constraint or other DB error — fallback to inbox setSaving(false); @@ -120,7 +121,7 @@ export default function NewTaskScreen() { isDark ? 'border-[#3A3A3A]' : 'border-[#E5E7EB]' }`} > - router.back()} className="p-2.5" hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}> + goBack(router)} className="p-2.5" hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}> { + if (router.canGoBack()) { + router.back(); + } else { + router.replace('/'); + } +};