From 733b6cd14b19d5cdec4af73c1cecadf6c7dd2d5f Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 13 Apr 2026 19:07:20 +0300 Subject: [PATCH] fix: use nullish coalescing for recurrence weekday to allow Sunday selection (#1014) Fixes #812 When creating a "Monthly on weekday" recurring task, the selector would jump back to Monday when trying to select Sunday. This was caused by using the logical OR operator (||) instead of the nullish coalescing operator (??) when handling the recurrence_weekday value. Since Sunday is represented as 0, the || operator treated it as falsy and defaulted to null/undefined, which then defaulted to 1 (Monday). Changes: - Replace || with ?? for recurrence_weekday in TaskRecurrenceCard.tsx - Replace || with ?? for recurrence_weekday in TaskDetails.tsx - Also fix recurrence_week_of_month and recurrence_month_day for consistency --- frontend/components/Task/TaskDetails.tsx | 30 +++++++++---------- .../Task/TaskDetails/TaskRecurrenceCard.tsx | 6 ++-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/frontend/components/Task/TaskDetails.tsx b/frontend/components/Task/TaskDetails.tsx index b849cc8..339a3d0 100644 --- a/frontend/components/Task/TaskDetails.tsx +++ b/frontend/components/Task/TaskDetails.tsx @@ -140,10 +140,10 @@ const TaskDetails: React.FC = () => { recurrence_type: task?.recurrence_type || 'none', recurrence_interval: task?.recurrence_interval || 1, recurrence_end_date: task?.recurrence_end_date || '', - recurrence_weekday: task?.recurrence_weekday || null, + recurrence_weekday: task?.recurrence_weekday ?? null, recurrence_weekdays: task?.recurrence_weekdays || [], - recurrence_month_day: task?.recurrence_month_day || null, - recurrence_week_of_month: task?.recurrence_week_of_month || null, + recurrence_month_day: task?.recurrence_month_day ?? null, + recurrence_week_of_month: task?.recurrence_week_of_month ?? null, completion_based: task?.completion_based || false, }); const [activePill, setActivePill] = useState('overview'); @@ -159,10 +159,10 @@ const TaskDetails: React.FC = () => { recurrence_type: task?.recurrence_type || 'none', recurrence_interval: task?.recurrence_interval || 1, recurrence_end_date: task?.recurrence_end_date || '', - recurrence_weekday: task?.recurrence_weekday || null, + recurrence_weekday: task?.recurrence_weekday ?? null, recurrence_weekdays: task?.recurrence_weekdays || [], - recurrence_month_day: task?.recurrence_month_day || null, - recurrence_week_of_month: task?.recurrence_week_of_month || null, + recurrence_month_day: task?.recurrence_month_day ?? null, + recurrence_week_of_month: task?.recurrence_week_of_month ?? null, completion_based: task?.completion_based || false, }); }, [ @@ -187,10 +187,10 @@ const TaskDetails: React.FC = () => { recurrence_type: task?.recurrence_type || 'none', recurrence_interval: task?.recurrence_interval || 1, recurrence_end_date: task?.recurrence_end_date || '', - recurrence_weekday: task?.recurrence_weekday || null, + recurrence_weekday: task?.recurrence_weekday ?? null, recurrence_weekdays: task?.recurrence_weekdays || [], - recurrence_month_day: task?.recurrence_month_day || null, - recurrence_week_of_month: task?.recurrence_week_of_month || null, + recurrence_month_day: task?.recurrence_month_day ?? null, + recurrence_week_of_month: task?.recurrence_week_of_month ?? null, completion_based: task?.completion_based || false, }); setIsEditingRecurrence(true); @@ -247,7 +247,7 @@ const TaskDetails: React.FC = () => { recurrence_weekday: recurrenceForm.recurrence_type === 'weekly' || recurrenceForm.recurrence_type === 'monthly_weekday' - ? recurrenceForm.recurrence_weekday || null + ? recurrenceForm.recurrence_weekday ?? null : null, recurrence_weekdays: recurrenceForm.recurrence_type === 'weekly' @@ -255,11 +255,11 @@ const TaskDetails: React.FC = () => { : null, recurrence_month_day: recurrenceForm.recurrence_type === 'monthly' - ? recurrenceForm.recurrence_month_day || null + ? recurrenceForm.recurrence_month_day ?? null : null, recurrence_week_of_month: recurrenceForm.recurrence_type === 'monthly_weekday' - ? recurrenceForm.recurrence_week_of_month || null + ? recurrenceForm.recurrence_week_of_month ?? null : null, completion_based: recurrenceForm.completion_based, }; @@ -298,10 +298,10 @@ const TaskDetails: React.FC = () => { recurrence_type: task?.recurrence_type || 'none', recurrence_interval: task?.recurrence_interval || 1, recurrence_end_date: task?.recurrence_end_date || '', - recurrence_weekday: task?.recurrence_weekday || null, + recurrence_weekday: task?.recurrence_weekday ?? null, recurrence_weekdays: task?.recurrence_weekdays || [], - recurrence_month_day: task?.recurrence_month_day || null, - recurrence_week_of_month: task?.recurrence_week_of_month || null, + recurrence_month_day: task?.recurrence_month_day ?? null, + recurrence_week_of_month: task?.recurrence_week_of_month ?? null, completion_based: task?.completion_based || false, }); }; diff --git a/frontend/components/Task/TaskDetails/TaskRecurrenceCard.tsx b/frontend/components/Task/TaskDetails/TaskRecurrenceCard.tsx index 9c4ac91..2d538cb 100644 --- a/frontend/components/Task/TaskDetails/TaskRecurrenceCard.tsx +++ b/frontend/components/Task/TaskDetails/TaskRecurrenceCard.tsx @@ -150,16 +150,16 @@ const TaskRecurrenceCard: React.FC = ({ recurrenceForm.recurrence_end_date || undefined } recurrenceWeekday={ - recurrenceForm.recurrence_weekday || undefined + recurrenceForm.recurrence_weekday ?? undefined } recurrenceWeekdays={ recurrenceForm.recurrence_weekdays || [] } recurrenceMonthDay={ - recurrenceForm.recurrence_month_day || undefined + recurrenceForm.recurrence_month_day ?? undefined } recurrenceWeekOfMonth={ - recurrenceForm.recurrence_week_of_month || + recurrenceForm.recurrence_week_of_month ?? undefined } completionBased={recurrenceForm.completion_based}