diff --git a/src/App.tsx b/src/App.tsx index 0702b85f..553b0715 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -37,6 +37,7 @@ import { clearUserData, setUser, setUserAccount, + setCustomerAccount, useUserStore, } from "@root/user"; import { enqueueSnackbar } from "notistack"; @@ -136,6 +137,21 @@ export default function App() { }, }); + useUserAccountFetcher({ + url: "https://squiz.pena.digital/customer/account", + userId, + onNewUserAccount: setCustomerAccount, + onError: (error) => { + const errorMessage = getMessageFromFetchError(error); + if (errorMessage) { + enqueueSnackbar(errorMessage); + clearUserData(); + clearAuthToken(); + navigate("/signin"); + } + }, + }); + useUserAccountFetcher({ url: "https://squiz.pena.digital/squiz/account/get", userId, diff --git a/src/pages/auth/Signup.tsx b/src/pages/auth/Signup.tsx index 5ecfafc3..b28c1af0 100644 --- a/src/pages/auth/Signup.tsx +++ b/src/pages/auth/Signup.tsx @@ -10,7 +10,7 @@ import { useMediaQuery, useTheme, } from "@mui/material"; -import { setUserId, useUserStore, setUserAccount } from "@root/user"; +import { setUserId, useUserStore } from "@root/user"; import InputTextfield from "@ui_kit/InputTextfield"; import Logotip from "../../pages/Landing/images/icons/QuizLogo"; import PasswordInput from "@ui_kit/passwordInput"; @@ -19,7 +19,6 @@ import { enqueueSnackbar } from "notistack"; import { useEffect, useState } from "react"; import { Link as RouterLink, useLocation, useNavigate } from "react-router-dom"; import { object, ref, string } from "yup"; -import { useUserAccountFetcher } from "@frontend/kitui"; interface Values { email: string; @@ -48,18 +47,11 @@ const validationSchema = object({ export default function SignupDialog() { const [isDialogOpen, setIsDialogOpen] = useState(true); - const { user, userId } = useUserStore((state) => state); + const { user } = useUserStore((state) => state); const theme = useTheme(); const upMd = useMediaQuery(theme.breakpoints.up("md")); const location = useLocation(); - useUserAccountFetcher({ - url: "https://squiz.pena.digital/customer/account", - userId, - onNewUserAccount: setUserAccount, - onError: enqueueSnackbar, - }); - const navigate = useNavigate(); const formik = useFormik({ initialValues, diff --git a/src/stores/user.ts b/src/stores/user.ts index fcec4342..8c774a50 100644 --- a/src/stores/user.ts +++ b/src/stores/user.ts @@ -7,12 +7,14 @@ interface UserStore { userId: string | null; user: User | null; userAccount: UserAccount | null; + customerAccount: UserAccount | null; } const initialState: UserStore = { userId: null, user: null, userAccount: null, + customerAccount: null, }; export const useUserStore = create()( @@ -50,3 +52,6 @@ export const clearUserData = () => useUserStore.setState({ ...initialState }); export const setUserAccount = (userAccount: UserAccount) => useUserStore.setState({ userAccount }); + +export const setCustomerAccount = (customerAccount: UserAccount) => + useUserStore.setState({ customerAccount });