From 7201a8ca00cd676061ccd78bb7ed7cd90055dd55 Mon Sep 17 00:00:00 2001 From: condyl Date: Sun, 11 Jan 2026 16:42:28 -0500 Subject: [PATCH] fix: defer calendar navigation render warning --- .../generator/Calendar/CalendarComponent.jsx | 15 ++++++++++++--- .../Calendar/hooks/useTimetableManagement.jsx | 5 ++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/generator/Calendar/CalendarComponent.jsx b/src/components/generator/Calendar/CalendarComponent.jsx index 30f0c2a..cd51021 100644 --- a/src/components/generator/Calendar/CalendarComponent.jsx +++ b/src/components/generator/Calendar/CalendarComponent.jsx @@ -201,12 +201,18 @@ export default function CalendarComponent({ ]); const handleCalendarViewClick = (durationLabel) => { - const calendarApi = calendarRef.current.getApi(); + const calendarApi = calendarRef.current?.getApi(); + if (!calendarApi) return; + const [startUnix, endUnix, duration] = durationLabel.split("-"); const startDate = new Date(parseInt(startUnix) * 1000); const navigationDate = calculateNavigationDate(startDate); - calendarApi.gotoDate(navigationDate); + + // Defer gotoDate to avoid flushSync warning during React render + queueMicrotask(() => { + calendarApi.gotoDate(navigationDate); + }); if (previousDuration == null) { previousDuration = duration; @@ -424,7 +430,10 @@ export default function CalendarComponent({ if (calendarRef.current && calendarRef.current.getApi) { try { const calendarApi = calendarRef.current.getApi(); - calendarApi.gotoDate(date); + // Defer gotoDate to avoid flushSync warning during React render + queueMicrotask(() => { + calendarApi.gotoDate(date); + }); } catch (error) { // Error handling silently ignored } diff --git a/src/components/generator/Calendar/hooks/useTimetableManagement.jsx b/src/components/generator/Calendar/hooks/useTimetableManagement.jsx index 4eed4d1..c554918 100644 --- a/src/components/generator/Calendar/hooks/useTimetableManagement.jsx +++ b/src/components/generator/Calendar/hooks/useTimetableManagement.jsx @@ -65,7 +65,10 @@ export const useTimetableManagement = ({ navigationDate.setDate(navigationDate.getDate() - daysToSubtract); } - calendarApi.gotoDate(navigationDate); + // Defer gotoDate to avoid flushSync warning during React render + queueMicrotask(() => { + calendarApi.gotoDate(navigationDate); + }); if (previousDuration == null) { previousDuration = duration;