errorreporter
This commit is contained in:
parent
291d059654
commit
0ae7cb702f
@ -20,7 +20,7 @@
|
|||||||
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
||||||
"@emotion/react": "^11.10.5",
|
"@emotion/react": "^11.10.5",
|
||||||
"@emotion/styled": "^11.10.5",
|
"@emotion/styled": "^11.10.5",
|
||||||
"@frontend/kitui": "^1.0.108",
|
"@frontend/kitui": "^1.0.110",
|
||||||
"@mui/icons-material": "^5.10.14",
|
"@mui/icons-material": "^5.10.14",
|
||||||
"@mui/material": "^5.10.14",
|
"@mui/material": "^5.10.14",
|
||||||
"@mui/x-date-pickers": "^7.13.0",
|
"@mui/x-date-pickers": "^7.13.0",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
|
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { UserAccount } from "@frontend/kitui";
|
import { UserAccount } from "@frontend/kitui";
|
||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
import Cart from "@root/pages/Cart/Cart";
|
import Cart from "@root/pages/Cart/Cart";
|
||||||
|
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Tariff } from "@frontend/kitui";
|
import { Tariff } from "@frontend/kitui";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
|
|
||||||
export interface GetHistoryResponse {
|
export interface GetHistoryResponse {
|
||||||
totalPages: number;
|
totalPages: number;
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
import * as KIT from "@frontend/kitui";
|
|
||||||
import { Method, ResponseType, AxiosError } from "axios";
|
|
||||||
import { clearAuthToken } from "@frontend/kitui";
|
|
||||||
import { clearUserData } from "@root/stores/user";
|
|
||||||
import { clearCustomTariffs } from "@root/stores/customTariffs";
|
|
||||||
import { clearTickets } from "@root/stores/tickets";
|
|
||||||
import { redirect } from "react-router-dom";
|
|
||||||
import { setNotEnoughMoneyAmount } from "@stores/allTypesOfPurchases";
|
|
||||||
|
|
||||||
interface MakeRequest {
|
|
||||||
method?: Method | undefined;
|
|
||||||
url: string;
|
|
||||||
body?: unknown;
|
|
||||||
useToken?: boolean | undefined;
|
|
||||||
contentType?: boolean | undefined;
|
|
||||||
responseType?: ResponseType | undefined;
|
|
||||||
signal?: AbortSignal | undefined;
|
|
||||||
withCredentials?: boolean | undefined;
|
|
||||||
}
|
|
||||||
interface ErrorResponseData {
|
|
||||||
message?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function makeRequest<TRequest = unknown, TResponse = unknown>(
|
|
||||||
data: MakeRequest
|
|
||||||
): Promise<TResponse> {
|
|
||||||
try {
|
|
||||||
const response = await KIT.makeRequest<unknown>(data);
|
|
||||||
|
|
||||||
return response as TResponse;
|
|
||||||
} catch (e) {
|
|
||||||
const error = e as AxiosError;
|
|
||||||
if (
|
|
||||||
error.response?.status === 400 &&
|
|
||||||
(error.response?.data as ErrorResponseData)?.message ===
|
|
||||||
"refreshToken is empty"
|
|
||||||
) {
|
|
||||||
clearAuthToken();
|
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0);
|
|
||||||
redirect("/");
|
|
||||||
}
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export default makeRequest;
|
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
import type { GetDiscountsResponse } from "@root/model/discount";
|
import type { GetDiscountsResponse } from "@root/model/discount";
|
||||||
import { useUserStore } from "@root/stores/user";
|
import { useUserStore } from "@root/stores/user";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
|
|
||||||
import { parseAxiosError } from "@utils/parse-error";
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
|
||||||
const API_URL = `${process.env.REACT_APP_DOMAIN}/customer/v1.0.1`;
|
const API_URL = `${process.env.REACT_APP_DOMAIN}/customer/v1.0.1`;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
import { Tariff } from "@frontend/kitui";
|
import { Tariff } from "@frontend/kitui";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
import { createTicket as createTicketRequest } from "@frontend/kitui";
|
import { createTicket as createTicketRequest } from "@frontend/kitui";
|
||||||
import type { CreateTicketResponse } from "@frontend/kitui";
|
import type { CreateTicketResponse } from "@frontend/kitui";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { User } from "@frontend/kitui";
|
import { User } from "@frontend/kitui";
|
||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
import { PatchUserRequest } from "@root/model/user";
|
import { PatchUserRequest } from "@root/model/user";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
|
|
||||||
import { jsonToFormdata } from "@root/utils/jsonToFormdata";
|
import { jsonToFormdata } from "@root/utils/jsonToFormdata";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
import { SendPaymentRequest, SendPaymentResponse } from "@root/model/wallet";
|
import { SendPaymentRequest, SendPaymentResponse } from "@root/model/wallet";
|
||||||
import { parseAxiosError } from "@root/utils/parse-error";
|
import { parseAxiosError } from "@root/utils/parse-error";
|
||||||
|
|
||||||
|
@ -129,6 +129,7 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) {
|
|||||||
shown: { me: 1 },
|
shown: { me: 1 },
|
||||||
ticket_id: "111",
|
ticket_id: "111",
|
||||||
user_id: "greetingMessage",
|
user_id: "greetingMessage",
|
||||||
|
system: true,
|
||||||
};
|
};
|
||||||
}, [open]);
|
}, [open]);
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ import { currencyFormatter } from "@root/utils/currencyFormatter";
|
|||||||
import { clearCustomTariffs } from "@root/stores/customTariffs";
|
import { clearCustomTariffs } from "@root/stores/customTariffs";
|
||||||
import { clearTickets } from "@root/stores/tickets";
|
import { clearTickets } from "@root/stores/tickets";
|
||||||
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
||||||
|
import { logoutAndRedirect } from "@root/utils/logout";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
isLoggedIn: boolean;
|
isLoggedIn: boolean;
|
||||||
@ -44,15 +45,8 @@ export default function NavbarFull({ isLoggedIn }: Props) {
|
|||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
|
|
||||||
async function handleLogoutClick() {
|
async function handleLogoutClick() {
|
||||||
clearAuthToken();
|
logoutAndRedirect(navigate);
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0)
|
|
||||||
navigate("/");
|
|
||||||
|
|
||||||
const [_, logoutError] = await logout();
|
const [_, logoutError] = await logout();
|
||||||
|
|
||||||
if (logoutError) {
|
if (logoutError) {
|
||||||
return enqueueSnackbar(logoutError);
|
return enqueueSnackbar(logoutError);
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ import { enqueueSnackbar } from "notistack";
|
|||||||
import { clearCustomTariffs } from "@root/stores/customTariffs";
|
import { clearCustomTariffs } from "@root/stores/customTariffs";
|
||||||
import { clearTickets } from "@root/stores/tickets";
|
import { clearTickets } from "@root/stores/tickets";
|
||||||
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
||||||
|
import { logoutAndRedirect } from "@root/utils/logout";
|
||||||
|
|
||||||
type MenuItem = {
|
type MenuItem = {
|
||||||
name: string;
|
name: string;
|
||||||
@ -66,15 +67,8 @@ export default function DialogMenu({ handleClose }: DialogMenuProps) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
async function handleLogoutClick() {
|
async function handleLogoutClick() {
|
||||||
clearAuthToken();
|
logoutAndRedirect(navigate);
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0)
|
|
||||||
navigate("/");
|
|
||||||
|
|
||||||
const [_, logoutError] = await logout();
|
const [_, logoutError] = await logout();
|
||||||
|
|
||||||
if (logoutError) {
|
if (logoutError) {
|
||||||
return enqueueSnackbar(logoutError);
|
return enqueueSnackbar(logoutError);
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ import { clearTickets } from "@root/stores/tickets";
|
|||||||
|
|
||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
||||||
|
import { logoutAndRedirect } from "@root/utils/logout";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
@ -30,15 +31,8 @@ export default function NavbarFull({ children }: Props) {
|
|||||||
const initials = useUserStore((state) => state.initials);
|
const initials = useUserStore((state) => state.initials);
|
||||||
|
|
||||||
async function handleLogoutClick() {
|
async function handleLogoutClick() {
|
||||||
clearAuthToken();
|
logoutAndRedirect(navigate);
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0)
|
|
||||||
navigate("/");
|
|
||||||
|
|
||||||
const [_, logoutError] = await logout();
|
const [_, logoutError] = await logout();
|
||||||
|
|
||||||
if (logoutError) {
|
if (logoutError) {
|
||||||
return enqueueSnackbar(logoutError);
|
return enqueueSnackbar(logoutError);
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import { currencyFormatter } from "@root/utils/currencyFormatter";
|
|||||||
|
|
||||||
import walletIcon from "@root/assets/Icons/wallet_icon.svg";
|
import walletIcon from "@root/assets/Icons/wallet_icon.svg";
|
||||||
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
import {setNotEnoughMoneyAmount} from "@stores/allTypesOfPurchases"
|
||||||
|
import { logoutAndRedirect } from "@root/utils/logout";
|
||||||
|
|
||||||
export const NavbarPanel = () => {
|
export const NavbarPanel = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@ -28,15 +29,8 @@ export const NavbarPanel = () => {
|
|||||||
const initials = useUserStore((state) => state.initials);
|
const initials = useUserStore((state) => state.initials);
|
||||||
|
|
||||||
async function handleLogoutClick() {
|
async function handleLogoutClick() {
|
||||||
clearAuthToken();
|
logoutAndRedirect(navigate);
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0)
|
|
||||||
navigate("/");
|
|
||||||
|
|
||||||
const [_, logoutError] = await logout();
|
const [_, logoutError] = await logout();
|
||||||
|
|
||||||
if (logoutError) {
|
if (logoutError) {
|
||||||
return enqueueSnackbar(logoutError);
|
return enqueueSnackbar(logoutError);
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,10 @@ import { ModalRequestCreate } from "./pages/Tariffs/ModalRequestCreate";
|
|||||||
import * as crutch from "./useUserAccountFetcher";
|
import * as crutch from "./useUserAccountFetcher";
|
||||||
import { useTryBuy } from "./utils/hooks/useTryBuy";
|
import { useTryBuy } from "./utils/hooks/useTryBuy";
|
||||||
import AnyServicePayment from "./pages/AnyServicePayment/AnyServicePayment";
|
import AnyServicePayment from "./pages/AnyServicePayment/AnyServicePayment";
|
||||||
|
import { ErrorBoundary } from "react-error-boundary";
|
||||||
|
import { ApologyFallback } from "./pages/ApologyPage";
|
||||||
|
import { handleComponentError } from "./utils/handleComponentError";
|
||||||
|
import { createMakeRequestConfig } from "@frontend/kitui";
|
||||||
|
|
||||||
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.js`;
|
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.js`;
|
||||||
|
|
||||||
@ -225,24 +229,31 @@ const App = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
createMakeRequestConfig(undefined, handleComponentError, () => []);
|
||||||
|
|
||||||
const root = ReactDOM.createRoot(
|
const root = ReactDOM.createRoot(
|
||||||
document.getElementById("root") as HTMLElement
|
document.getElementById("root") as HTMLElement
|
||||||
);
|
);
|
||||||
root.render(
|
root.render(
|
||||||
// <React.StrictMode>
|
// <React.StrictMode>
|
||||||
<ThemeProvider theme={theme}>
|
<ErrorBoundary
|
||||||
<LocalizationProvider
|
FallbackComponent={ApologyFallback}
|
||||||
dateAdapter={AdapterMoment}
|
onError={handleComponentError}
|
||||||
adapterLocale="ru"
|
>
|
||||||
localeText={localeText}
|
<ThemeProvider theme={theme}>
|
||||||
>
|
<LocalizationProvider
|
||||||
<BrowserRouter>
|
dateAdapter={AdapterMoment}
|
||||||
<CssBaseline />
|
adapterLocale="ru"
|
||||||
<SnackbarProvider />
|
localeText={localeText}
|
||||||
<App />
|
>
|
||||||
</BrowserRouter>
|
<BrowserRouter>
|
||||||
</LocalizationProvider>
|
<CssBaseline />
|
||||||
</ThemeProvider>
|
<SnackbarProvider />
|
||||||
|
<App />
|
||||||
|
</BrowserRouter>
|
||||||
|
</LocalizationProvider>
|
||||||
|
</ThemeProvider>
|
||||||
|
</ErrorBoundary>
|
||||||
// </React.StrictMode>
|
// </React.StrictMode>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ import { clearCustomTariffs } from "@root/stores/customTariffs";
|
|||||||
import { clearTickets } from "@root/stores/tickets";
|
import { clearTickets } from "@root/stores/tickets";
|
||||||
import { cancelPayCartProcess, setAction, setBackWay, setFromDomain, setNotEnoughMoneyAmount, startPayCartProcess } from "@stores/allTypesOfPurchases"
|
import { cancelPayCartProcess, setAction, setBackWay, setFromDomain, setNotEnoughMoneyAmount, startPayCartProcess } from "@stores/allTypesOfPurchases"
|
||||||
import { Action, FromDomain } from "@root/model/autoPay";
|
import { Action, FromDomain } from "@root/model/autoPay";
|
||||||
|
import { logoutAndRedirect, clearUserSession } from "@root/utils/logout";
|
||||||
//http://localhost:3001/payment?fromdomain=localhost:3000&action=buy&dif=96900&userid=68773ec66816e2c659b36dad&sec=
|
//http://localhost:3001/payment?fromdomain=localhost:3000&action=buy&dif=96900&userid=68773ec66816e2c659b36dad&sec=
|
||||||
let first = true;
|
let first = true;
|
||||||
|
|
||||||
@ -74,11 +75,7 @@ export default function AnyServicePayment() {
|
|||||||
if (URLaction && URLmoneyDifferent && URLtoken) {
|
if (URLaction && URLmoneyDifferent && URLtoken) {
|
||||||
(async () => {
|
(async () => {
|
||||||
if (getAuthToken()) {
|
if (getAuthToken()) {
|
||||||
clearAuthToken();
|
logoutAndRedirect(navigate);
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0)
|
|
||||||
await logout();
|
await logout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { Box, Typography } from "@mui/material";
|
import { Box, Typography } from "@mui/material";
|
||||||
|
import { FallbackProps } from "react-error-boundary";
|
||||||
|
|
||||||
export const ApologyPage = ({ message }: { message: string }) => {
|
export const ApologyPage = ({ message }: { message: string }) => {
|
||||||
return (
|
return (
|
||||||
@ -20,3 +21,7 @@ export const ApologyPage = ({ message }: { message: string }) => {
|
|||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function ApologyFallback({ error }: FallbackProps) {
|
||||||
|
return <ApologyPage message={error?.message || "что-то пошло не так"} />;
|
||||||
|
}
|
||||||
|
@ -2,7 +2,7 @@ import { useEffect, useLayoutEffect, useRef } from "react";
|
|||||||
import { createUserAccount, devlog, getAuthToken, setAuthToken } from "@frontend/kitui";
|
import { createUserAccount, devlog, getAuthToken, setAuthToken } from "@frontend/kitui";
|
||||||
import { isAxiosError } from "axios";
|
import { isAxiosError } from "axios";
|
||||||
|
|
||||||
import makeRequest from "@api/makeRequest";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
|
|
||||||
import type { UserAccount } from "@frontend/kitui";
|
import type { UserAccount } from "@frontend/kitui";
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import { clearTickets } from '@root/stores/tickets';
|
|||||||
import { clearUserData, setUserId, useUserStore } from '@root/stores/user';
|
import { clearUserData, setUserId, useUserStore } from '@root/stores/user';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useLocation, useNavigate } from 'react-router-dom';
|
import { useLocation, useNavigate } from 'react-router-dom';
|
||||||
|
import { clearUserSession, logoutAndRedirect } from "@root/utils/logout";
|
||||||
|
|
||||||
interface QuizAuthParams {
|
interface QuizAuthParams {
|
||||||
action?: string;
|
action?: string;
|
||||||
@ -62,11 +63,7 @@ export const useReauthorization = () => {
|
|||||||
try {
|
try {
|
||||||
// Если есть текущий токен, очищаем данные
|
// Если есть текущий токен, очищаем данные
|
||||||
if (getAuthToken()) {
|
if (getAuthToken()) {
|
||||||
clearAuthToken();
|
logoutAndRedirect(navigate);
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0);
|
|
||||||
await logout();
|
await logout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,11 +92,7 @@ export const useReauthorization = () => {
|
|||||||
// Если есть токен в URL, устанавливаем его
|
// Если есть токен в URL, устанавливаем его
|
||||||
// Очищаем данные только если токен действительно изменился
|
// Очищаем данные только если токен действительно изменился
|
||||||
if (getAuthToken() !== URLtoken) {
|
if (getAuthToken() !== URLtoken) {
|
||||||
clearAuthToken();
|
clearUserSession();
|
||||||
clearUserData();
|
|
||||||
clearCustomTariffs();
|
|
||||||
clearTickets();
|
|
||||||
setNotEnoughMoneyAmount(0);
|
|
||||||
// Не вызываем logout() чтобы избежать перенаправления
|
// Не вызываем logout() чтобы избежать перенаправления
|
||||||
}
|
}
|
||||||
setAuthToken(URLtoken);
|
setAuthToken(URLtoken);
|
||||||
|
25
src/utils/logout.ts
Normal file
25
src/utils/logout.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { clearAuthToken } from "@frontend/kitui";
|
||||||
|
import { clearUserData } from "@root/stores/user";
|
||||||
|
import { clearCustomTariffs } from "@root/stores/customTariffs";
|
||||||
|
import { clearTickets } from "@root/stores/tickets";
|
||||||
|
import { setNotEnoughMoneyAmount } from "@root/stores/allTypesOfPurchases";
|
||||||
|
import { NavigateFunction } from "react-router-dom";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Очищает все пользовательские данные (без редиректа)
|
||||||
|
*/
|
||||||
|
export function clearUserSession() {
|
||||||
|
clearAuthToken();
|
||||||
|
clearUserData();
|
||||||
|
clearCustomTariffs();
|
||||||
|
clearTickets();
|
||||||
|
setNotEnoughMoneyAmount(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Выполняет полный логаут пользователя и редиректит на главную страницу
|
||||||
|
*/
|
||||||
|
export function logoutAndRedirect(navigate: NavigateFunction) {
|
||||||
|
clearUserSession();
|
||||||
|
navigate("/");
|
||||||
|
}
|
@ -1521,10 +1521,10 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
|
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
|
||||||
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
|
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
|
||||||
|
|
||||||
"@frontend/kitui@^1.0.108":
|
"@frontend/kitui@^1.0.110":
|
||||||
version "1.0.108"
|
version "1.0.110"
|
||||||
resolved "http://gitea.pena/api/packages/skeris/npm/%40frontend%2Fkitui/-/1.0.108/kitui-1.0.108.tgz#1bb609dfe07668b6fd9a7b8618c229e0bb609f1e"
|
resolved "http://gitea.pena/api/packages/skeris/npm/%40frontend%2Fkitui/-/1.0.110/kitui-1.0.110.tgz#0c0a968293338537a2811e7761f8efe933893573"
|
||||||
integrity sha512-4DiF7GHX0RbBMZpFioclc3B87N+HrGLv1B3DveUCdHzukfxvFXyEKnRZQ4wYljO2A3FLSD9+4Dr6cSuZYw95OQ==
|
integrity sha512-XOCev5zNtNZ8fu3IfK6oFNOqT8lE9jlmUX1kQ3OO+H30/LBpnBrww9nV/aHV2TEm0wYXdRMvaEtU6VOb72sDdg==
|
||||||
dependencies:
|
dependencies:
|
||||||
immer "^10.0.2"
|
immer "^10.0.2"
|
||||||
reconnecting-eventsource "^1.6.2"
|
reconnecting-eventsource "^1.6.2"
|
||||||
|
Loading…
Reference in New Issue
Block a user