fix: fixed bug where activeSchedule doesn't update correctly (#158)

* fix: fixed bug where activeSchedule doesn't update correctly

* refactor: always returning activeSchedule

* style: prettier
This commit is contained in:
Som Gupta
2024-03-13 22:15:02 -05:00
committed by GitHub
parent 5cce1c79fc
commit a409090b90

View File

@@ -15,17 +15,17 @@ async function fetchData() {
UserScheduleStore.get('activeIndex'), UserScheduleStore.get('activeIndex'),
]); ]);
schedulesCache = storedSchedules.map(s => new UserSchedule(s)); schedulesCache = storedSchedules.map(s => new UserSchedule(s));
activeIndexCache = storedActiveIndex; activeIndexCache = storedActiveIndex >= 0 ? storedActiveIndex : 0;
} }
/** /**
* Custom hook that manages user schedules. * Custom hook that manages user schedules.
* @returns A tuple containing the active schedule and an array of all schedules. * @returns A tuple containing the active schedule and an array of all schedules.
*/ */
export default function useSchedules(): [active: UserSchedule | null, schedules: UserSchedule[]] { export default function useSchedules(): [active: UserSchedule, schedules: UserSchedule[]] {
const [schedules, setSchedules] = useState<UserSchedule[]>(schedulesCache); const [schedules, setSchedules] = useState<UserSchedule[]>(schedulesCache);
const [activeIndex, setActiveIndex] = useState<number>(activeIndexCache); const [activeIndex, setActiveIndex] = useState<number>(activeIndexCache);
const [activeSchedule, setActiveSchedule] = useState<UserSchedule | null>(schedules[activeIndex]); const [activeSchedule, setActiveSchedule] = useState<UserSchedule>(schedules[activeIndex]);
if (initialLoad) { if (initialLoad) {
initialLoad = false; initialLoad = false;
@@ -62,13 +62,16 @@ export default function useSchedules(): [active: UserSchedule | null, schedules:
return [activeSchedule, schedules]; return [activeSchedule, schedules];
} }
export function getActiveSchedule(): UserSchedule | null { export function getActiveSchedule(): UserSchedule {
return schedulesCache[activeIndexCache] || null; return (
schedulesCache[activeIndexCache] || new UserSchedule({ courses: [], name: 'An error has occurred', hours: 0 })
);
} }
export async function replaceSchedule(oldSchedule: UserSchedule, newSchedule: UserSchedule) { export async function replaceSchedule(oldSchedule: UserSchedule, newSchedule: UserSchedule) {
const schedules = await UserScheduleStore.get('schedules'); const schedules = await UserScheduleStore.get('schedules');
const oldIndex = schedules.findIndex(s => s.name === oldSchedule.name); let oldIndex = schedules.findIndex(s => s.name === oldSchedule.name);
oldIndex = oldIndex !== -1 ? oldIndex : 0;
schedules[oldIndex] = newSchedule; schedules[oldIndex] = newSchedule;
await UserScheduleStore.set('schedules', schedules); await UserScheduleStore.set('schedules', schedules);
console.log('schedule replaced'); console.log('schedule replaced');