fix: calendar storybook issue (#125)

Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
This commit is contained in:
Lukas Zenick
2024-03-02 12:40:31 -06:00
committed by doprz
parent 265652c420
commit 0c5bec8002

View File

@@ -12,28 +12,36 @@ export default function useSchedules(): [active: UserSchedule | null, schedules:
const [activeSchedule, setActiveSchedule] = useState<UserSchedule | null>(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];