Merge branch 'dev' of penahub.gitlab.yandexcloud.net:frontend/squiz into dev
This commit is contained in:
commit
36c907d990
50
src/App.tsx
50
src/App.tsx
@ -16,15 +16,61 @@ import { ResultSettings } from "./pages/ResultPage/ResultSettings";
|
|||||||
import MyQuizzesFull from "./pages/createQuize/MyQuizzesFull";
|
import MyQuizzesFull from "./pages/createQuize/MyQuizzesFull";
|
||||||
import Main from "./pages/main";
|
import Main from "./pages/main";
|
||||||
import EditPage from "./pages/startPage/EditPage";
|
import EditPage from "./pages/startPage/EditPage";
|
||||||
import { clearAuthToken, getMessageFromFetchError, useUserAccountFetcher, useUserFetcher } from "@frontend/kitui";
|
import { clearAuthToken, getMessageFromFetchError, useUserFetcher, UserAccount, makeRequest, devlog, createUserAccount } from "@frontend/kitui";
|
||||||
import { clearUserData, setUser, setUserAccount, useUserStore } from "@root/user";
|
import { clearUserData, setUser, setUserAccount, useUserStore } from "@root/user";
|
||||||
import { enqueueSnackbar } from "notistack";
|
import { enqueueSnackbar } from "notistack";
|
||||||
import PrivateRoute from "@ui_kit/PrivateRoute";
|
import PrivateRoute from "@ui_kit/PrivateRoute";
|
||||||
|
|
||||||
import { Restore } from "./pages/startPage/Restore";
|
import { Restore } from "./pages/startPage/Restore";
|
||||||
|
|
||||||
|
import { isAxiosError } from "axios";
|
||||||
|
import { useEffect, useLayoutEffect, useRef } from "react";
|
||||||
|
export function useUserAccountFetcher({ onError, onNewUserAccount, url, userId }: {
|
||||||
|
url: string;
|
||||||
|
userId: string | null;
|
||||||
|
onNewUserAccount: (response: UserAccount) => void;
|
||||||
|
onError?: (error: any) => void;
|
||||||
|
}) {
|
||||||
|
const onNewUserAccountRef = useRef(onNewUserAccount);
|
||||||
|
const onErrorRef = useRef(onError);
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
onNewUserAccountRef.current = onNewUserAccount;
|
||||||
|
onErrorRef.current = onError;
|
||||||
|
}, [onError, onNewUserAccount]);
|
||||||
|
useEffect(() => {
|
||||||
|
if (!userId) return;
|
||||||
|
const controller = new AbortController();
|
||||||
|
makeRequest<never, UserAccount>({
|
||||||
|
url,
|
||||||
|
contentType: true,
|
||||||
|
method: "GET",
|
||||||
|
useToken: true,
|
||||||
|
withCredentials: false,
|
||||||
|
signal: controller.signal,
|
||||||
|
}).then(result => {
|
||||||
|
devlog("User account", result);
|
||||||
|
onNewUserAccountRef.current(result);
|
||||||
|
}).catch(error => {
|
||||||
|
devlog("Error fetching user account", error);
|
||||||
|
if (isAxiosError(error) && error.response?.status === 404) {
|
||||||
|
createUserAccount(controller.signal, url.replace('get','create')).then(result => {
|
||||||
|
devlog("Created user account", result);
|
||||||
|
onNewUserAccountRef.current(result);
|
||||||
|
}).catch(error => {
|
||||||
|
devlog("Error creating user account", error);
|
||||||
|
onErrorRef.current?.(error);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
onErrorRef.current?.(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return () => controller.abort();
|
||||||
|
}, [url, userId]);
|
||||||
|
}
|
||||||
|
|
||||||
dayjs.locale("ru");
|
dayjs.locale("ru");
|
||||||
|
|
||||||
|
|
||||||
const routeslink = [
|
const routeslink = [
|
||||||
{ path: "/list", page: <MyQuizzesFull />, header: false, sidebar: false },
|
{ path: "/list", page: <MyQuizzesFull />, header: false, sidebar: false },
|
||||||
{ path: "/questions/:quizId", page: <QuestionsPage />, header: true, sidebar: true },
|
{ path: "/questions/:quizId", page: <QuestionsPage />, header: true, sidebar: true },
|
||||||
@ -53,7 +99,7 @@ export default function App() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
useUserAccountFetcher({
|
useUserAccountFetcher({
|
||||||
url: "https://squiz.pena.digital/customer/account",
|
url: "https://squiz.pena.digital/squiz/account/get",
|
||||||
userId,
|
userId,
|
||||||
onNewUserAccount: setUserAccount,
|
onNewUserAccount: setUserAccount,
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user