Files
workavia-calendar-front/src/features/User/HandleLogin.tsx
T
Camille Moussu a8bff830ad 651 calendar auto hide upon loads (#667)
* [#651] fix duplicated initialisatoin at login
* [#651] prevent event overwrite when getting calendars list

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-03-18 18:13:04 +01:00

42 lines
1.2 KiB
TypeScript

import { useAppDispatch, useAppSelector } from "@/app/hooks";
import { useEffect, useRef } from "react";
import { push } from "redux-first-history";
import { setAppLoading } from "@/app/loadingSlice";
export function HandleLogin() {
const userData = useAppSelector((state) => state.user);
const calendars = useAppSelector((state) => state.calendars);
const dispatch = useAppDispatch();
const hasNavigatedRef = useRef(false);
// Navigate to /calendar only when all data is ready
useEffect(() => {
if (hasNavigatedRef.current) return;
if (userData.loading || calendars.pending) return;
if (userData.error || calendars.error) {
dispatch(setAppLoading(false));
dispatch(push("/error"));
return;
}
if (!userData.userData || !userData.tokens) return;
// Calendars list can be empty, that's valid - just need to finish loading
// All data is ready, navigate to calendar
hasNavigatedRef.current = true;
dispatch(setAppLoading(false));
dispatch(push("/calendar"));
}, [
userData.loading,
userData.userData,
userData.tokens,
userData.error,
calendars.pending,
calendars.error,
dispatch,
]);
return null;
}
export default HandleLogin;