fix: customer account request

This commit is contained in:
IlyaDoronin 2024-01-17 10:49:45 +03:00
parent b2c0c87d2d
commit c15a82cda8
3 changed files with 23 additions and 10 deletions

@ -37,6 +37,7 @@ import {
clearUserData, clearUserData,
setUser, setUser,
setUserAccount, setUserAccount,
setCustomerAccount,
useUserStore, useUserStore,
} from "@root/user"; } from "@root/user";
import { enqueueSnackbar } from "notistack"; 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({ useUserAccountFetcher({
url: "https://squiz.pena.digital/squiz/account/get", url: "https://squiz.pena.digital/squiz/account/get",
userId, userId,

@ -10,7 +10,7 @@ import {
useMediaQuery, useMediaQuery,
useTheme, useTheme,
} from "@mui/material"; } from "@mui/material";
import { setUserId, useUserStore, setUserAccount } from "@root/user"; import { setUserId, useUserStore } from "@root/user";
import InputTextfield from "@ui_kit/InputTextfield"; import InputTextfield from "@ui_kit/InputTextfield";
import Logotip from "../../pages/Landing/images/icons/QuizLogo"; import Logotip from "../../pages/Landing/images/icons/QuizLogo";
import PasswordInput from "@ui_kit/passwordInput"; import PasswordInput from "@ui_kit/passwordInput";
@ -19,7 +19,6 @@ import { enqueueSnackbar } from "notistack";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { Link as RouterLink, useLocation, useNavigate } from "react-router-dom"; import { Link as RouterLink, useLocation, useNavigate } from "react-router-dom";
import { object, ref, string } from "yup"; import { object, ref, string } from "yup";
import { useUserAccountFetcher } from "@frontend/kitui";
interface Values { interface Values {
email: string; email: string;
@ -48,18 +47,11 @@ const validationSchema = object({
export default function SignupDialog() { export default function SignupDialog() {
const [isDialogOpen, setIsDialogOpen] = useState<boolean>(true); const [isDialogOpen, setIsDialogOpen] = useState<boolean>(true);
const { user, userId } = useUserStore((state) => state); const { user } = useUserStore((state) => state);
const theme = useTheme(); const theme = useTheme();
const upMd = useMediaQuery(theme.breakpoints.up("md")); const upMd = useMediaQuery(theme.breakpoints.up("md"));
const location = useLocation(); const location = useLocation();
useUserAccountFetcher({
url: "https://squiz.pena.digital/customer/account",
userId,
onNewUserAccount: setUserAccount,
onError: enqueueSnackbar,
});
const navigate = useNavigate(); const navigate = useNavigate();
const formik = useFormik<Values>({ const formik = useFormik<Values>({
initialValues, initialValues,

@ -7,12 +7,14 @@ interface UserStore {
userId: string | null; userId: string | null;
user: User | null; user: User | null;
userAccount: UserAccount | null; userAccount: UserAccount | null;
customerAccount: UserAccount | null;
} }
const initialState: UserStore = { const initialState: UserStore = {
userId: null, userId: null,
user: null, user: null,
userAccount: null, userAccount: null,
customerAccount: null,
}; };
export const useUserStore = create<UserStore>()( export const useUserStore = create<UserStore>()(
@ -50,3 +52,6 @@ export const clearUserData = () => useUserStore.setState({ ...initialState });
export const setUserAccount = (userAccount: UserAccount) => export const setUserAccount = (userAccount: UserAccount) =>
useUserStore.setState({ userAccount }); useUserStore.setState({ userAccount });
export const setCustomerAccount = (customerAccount: UserAccount) =>
useUserStore.setState({ customerAccount });