From 0c5bec8002022cb4702f3879f43fcd32b9fa6b5a Mon Sep 17 00:00:00 2001 From: Lukas Zenick Date: Sat, 2 Mar 2024 12:40:31 -0600 Subject: [PATCH] fix: calendar storybook issue (#125) Co-authored-by: doprz <52579214+doprz@users.noreply.github.com> --- src/views/hooks/useSchedules.ts | 48 +++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/views/hooks/useSchedules.ts b/src/views/hooks/useSchedules.ts index 32f35a46..d9807413 100644 --- a/src/views/hooks/useSchedules.ts +++ b/src/views/hooks/useSchedules.ts @@ -12,28 +12,36 @@ export default function useSchedules(): [active: UserSchedule | null, schedules: const [activeSchedule, setActiveSchedule] = useState(null); useEffect(() => { - Promise.all([UserScheduleStore.get('schedules'), UserScheduleStore.get('activeIndex')]).then( - ([schedules, activeIndex]) => { - setSchedules(schedules.map(s => new UserSchedule(s))); - setActiveIndex(activeIndex); - setActiveSchedule(new UserSchedule(schedules[activeIndex])); + const fetchData = async () => { + const [storedSchedules, storedActiveIndex] = await Promise.all([ + UserScheduleStore.get('schedules'), + UserScheduleStore.get('activeIndex'), + ]); + setSchedules(storedSchedules.map(s => new UserSchedule(s))); + setActiveIndex(storedActiveIndex); + setActiveSchedule(new UserSchedule(storedSchedules[storedActiveIndex])); + + const initializable = UserScheduleStore.initialize(); + + if (initializable) { + const l1 = UserScheduleStore.listen('schedules', ({ newValue }) => { + setSchedules(newValue.map(s => new UserSchedule(s))); + setActiveSchedule(new UserSchedule(newValue[activeIndex])); + }); + + const l2 = UserScheduleStore.listen('activeIndex', ({ newValue }) => { + setActiveIndex(newValue); + setActiveSchedule(new UserSchedule(schedules[newValue])); + }); + + return () => { + UserScheduleStore.removeListener(l1); + UserScheduleStore.removeListener(l2); + }; } - ); - - const l1 = UserScheduleStore.listen('schedules', ({ newValue }) => { - setSchedules(newValue.map(s => new UserSchedule(s))); - setActiveSchedule(new UserSchedule(newValue[activeIndex])); - }); - - const l2 = UserScheduleStore.listen('activeIndex', ({ newValue }) => { - setActiveIndex(newValue); - setActiveSchedule(new UserSchedule(schedules[newValue])); - }); - - return () => { - UserScheduleStore.removeListener(l1); - UserScheduleStore.removeListener(l2); }; + + fetchData(); }, [activeIndex, schedules]); return [activeSchedule, schedules];