From dc5e923ba611196e071d57bf234e73b43b6fd0d9 Mon Sep 17 00:00:00 2001 From: Nastya Date: Tue, 16 Apr 2024 22:46:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=B5=D0=B9=D0=BA=20=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D0=B2=D0=B5=D1=81=D1=82=20=D0=B2=20=D0=BE=D0=B1=D1=91=D1=80?= =?UTF-8?q?=D1=82=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/auth.ts | 2 +- src/api/cart.ts | 4 +-- src/api/history.ts | 3 +- src/api/makeRequest.ts | 32 +++++++++++++++++++++ src/api/price.ts | 2 +- src/api/promocode.ts | 2 +- src/api/recentlyPurchasedTariffs.ts | 2 +- src/api/tariff.ts | 3 +- src/api/ticket.ts | 2 +- src/api/user.ts | 3 +- src/api/verification.ts | 2 +- src/api/wallet.ts | 2 +- src/components/FloatingSupportChat/Chat.tsx | 2 +- src/pages/History/AccordionWrapper.tsx | 2 -- src/pages/Support/SupportChat.tsx | 3 +- src/pages/auth/RecoverPassword.tsx | 6 ++-- src/utils/handleComponentError.ts | 1 - tsconfig.extend.json | 3 +- 18 files changed, 54 insertions(+), 22 deletions(-) create mode 100644 src/api/makeRequest.ts diff --git a/src/api/auth.ts b/src/api/auth.ts index 6594760..1550659 100644 --- a/src/api/auth.ts +++ b/src/api/auth.ts @@ -1,4 +1,4 @@ -import { makeRequest } from "@frontend/kitui"; +import makeRequest from "@api/makeRequest"; import { parseAxiosError } from "@root/utils/parse-error"; diff --git a/src/api/cart.ts b/src/api/cart.ts index 6d4bd32..299b932 100644 --- a/src/api/cart.ts +++ b/src/api/cart.ts @@ -1,5 +1,5 @@ -import { UserAccount, makeRequest } from "@frontend/kitui" -import { AxiosError } from "axios" +import { UserAccount } from "@frontend/kitui" +import makeRequest from "@api/makeRequest" import { parseAxiosError } from "@root/utils/parse-error" diff --git a/src/api/history.ts b/src/api/history.ts index ab8e7c9..9ed4d92 100644 --- a/src/api/history.ts +++ b/src/api/history.ts @@ -1,5 +1,6 @@ -import { Tariff, makeRequest } from "@frontend/kitui" +import { Tariff } from "@frontend/kitui" import { parseAxiosError } from "@root/utils/parse-error" +import makeRequest from "@api/makeRequest" export interface GetHistoryResponse { totalPages: number; diff --git a/src/api/makeRequest.ts b/src/api/makeRequest.ts new file mode 100644 index 0000000..c4c2b16 --- /dev/null +++ b/src/api/makeRequest.ts @@ -0,0 +1,32 @@ +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/cart" + +interface MakeRequest { method?: Method | undefined; url: string; body?: unknown; useToken?: boolean | undefined; contentType?: boolean | undefined; responseType?: ResponseType | undefined; signal?: AbortSignal | undefined; withCredentials?: boolean | undefined; } + +async function makeRequest(data: MakeRequest): Promise { + try { + const response = await KIT.makeRequest(data) + + return response as TResponse + } catch (e) { + const error = e as AxiosError; + //@ts-ignore + if (error.response?.status === 400 && error.response?.data?.message === "refreshToken is empty") { + + clearAuthToken(); + clearUserData(); + clearCustomTariffs(); + clearTickets(); + setNotEnoughMoneyAmount(0) + redirect("/"); + } + throw e + }; +}; +export default makeRequest; \ No newline at end of file diff --git a/src/api/price.ts b/src/api/price.ts index 2329f16..e50eb39 100644 --- a/src/api/price.ts +++ b/src/api/price.ts @@ -1,4 +1,4 @@ -import { makeRequest } from "@frontend/kitui"; +import makeRequest from "@api/makeRequest" import type { GetDiscountsResponse } from "@root/model/discount"; import { useUserStore } from "@root/stores/user"; import { parseAxiosError } from "@root/utils/parse-error"; diff --git a/src/api/promocode.ts b/src/api/promocode.ts index 9ab7fad..1644bf2 100644 --- a/src/api/promocode.ts +++ b/src/api/promocode.ts @@ -1,4 +1,4 @@ -import { makeRequest } from "@frontend/kitui"; +import makeRequest from "@api/makeRequest" import { parseAxiosError } from "@utils/parse-error"; diff --git a/src/api/recentlyPurchasedTariffs.ts b/src/api/recentlyPurchasedTariffs.ts index 9e09f5e..bf3b286 100644 --- a/src/api/recentlyPurchasedTariffs.ts +++ b/src/api/recentlyPurchasedTariffs.ts @@ -1,4 +1,4 @@ -import { makeRequest } from "@frontend/kitui" +import makeRequest from "@api/makeRequest" import { parseAxiosError } from "@root/utils/parse-error" export async function getRecentlyPurchasedTariffs(): Promise<[any | null, string?]> { diff --git a/src/api/tariff.ts b/src/api/tariff.ts index fcd395b..4cc119b 100644 --- a/src/api/tariff.ts +++ b/src/api/tariff.ts @@ -1,4 +1,5 @@ -import { Tariff, makeRequest } from "@frontend/kitui"; +import makeRequest from "@api/makeRequest" +import { Tariff } from "@frontend/kitui"; import { parseAxiosError } from "@root/utils/parse-error"; import type { PrivilegeWithoutPrice, ServiceKeyToPrivilegesMap } from "@root/model/privilege"; diff --git a/src/api/ticket.ts b/src/api/ticket.ts index bfa0d34..a5a9138 100644 --- a/src/api/ticket.ts +++ b/src/api/ticket.ts @@ -1,4 +1,4 @@ -import { makeRequest } from "@frontend/kitui"; +import makeRequest from "@api/makeRequest" import { parseAxiosError } from "@root/utils/parse-error"; import { SendTicketMessageRequest } from "@frontend/kitui"; diff --git a/src/api/user.ts b/src/api/user.ts index 52a3f1e..13a3358 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -1,4 +1,5 @@ -import { User, makeRequest } from "@frontend/kitui" +import { User } from "@frontend/kitui" +import makeRequest from "@api/makeRequest" import { PatchUserRequest } from "@root/model/user" import { parseAxiosError } from "@root/utils/parse-error" diff --git a/src/api/verification.ts b/src/api/verification.ts index b77ea2b..a6368d4 100644 --- a/src/api/verification.ts +++ b/src/api/verification.ts @@ -1,4 +1,4 @@ -import { makeRequest } from "@frontend/kitui" +import makeRequest from "@api/makeRequest" import { jsonToFormdata } from "@root/utils/jsonToFormdata" import { parseAxiosError } from "@root/utils/parse-error" diff --git a/src/api/wallet.ts b/src/api/wallet.ts index 6e860e2..e744367 100644 --- a/src/api/wallet.ts +++ b/src/api/wallet.ts @@ -1,4 +1,4 @@ -import { makeRequest } from "@frontend/kitui"; +import makeRequest from "@api/makeRequest" import { SendPaymentRequest, SendPaymentResponse } from "@root/model/wallet"; import { parseAxiosError } from "@root/utils/parse-error"; diff --git a/src/components/FloatingSupportChat/Chat.tsx b/src/components/FloatingSupportChat/Chat.tsx index 80d3645..afe2b76 100644 --- a/src/components/FloatingSupportChat/Chat.tsx +++ b/src/components/FloatingSupportChat/Chat.tsx @@ -10,9 +10,9 @@ import { useMediaQuery, useTheme, } from "@mui/material"; +import makeRequest from "@api/makeRequest" import { TicketMessage, - makeRequest, useTicketsFetcher, useTicketMessages, getMessageFromFetchError, diff --git a/src/pages/History/AccordionWrapper.tsx b/src/pages/History/AccordionWrapper.tsx index 6f8e5f9..d3b727a 100644 --- a/src/pages/History/AccordionWrapper.tsx +++ b/src/pages/History/AccordionWrapper.tsx @@ -4,8 +4,6 @@ import File from "@components/icons/File" import { getDeclension } from "@utils/declension" import { enqueueSnackbar } from "notistack" import { addTariffToCart } from "@root/stores/user" -import {getMessageFromFetchError, makeRequest} from "@frontend/kitui" -import EmailIcon from "@mui/icons-material/Email" export type History = { title: string; diff --git a/src/pages/Support/SupportChat.tsx b/src/pages/Support/SupportChat.tsx index df8c96f..ae992e3 100644 --- a/src/pages/Support/SupportChat.tsx +++ b/src/pages/Support/SupportChat.tsx @@ -14,7 +14,8 @@ import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useParams } from "react-router-dom"; import SendIcon from "@components/icons/SendIcon"; -import { makeRequest, throttle, useToken } from "@frontend/kitui"; +import makeRequest from "@api/makeRequest" +import { throttle, useToken } from "@frontend/kitui"; import { enqueueSnackbar } from "notistack"; import { useTicketStore } from "@root/stores/tickets"; import { diff --git a/src/pages/auth/RecoverPassword.tsx b/src/pages/auth/RecoverPassword.tsx index 5cc62f7..6d39afd 100644 --- a/src/pages/auth/RecoverPassword.tsx +++ b/src/pages/auth/RecoverPassword.tsx @@ -14,15 +14,13 @@ import { useFormik } from "formik"; import InputTextfield from "@components/InputTextfield"; import PenaLogo from "@components/PenaLogo"; import { enqueueSnackbar } from "notistack"; -import { Link as RouterLink } from "react-router-dom"; import { object, string } from "yup"; import { useEffect, useState } from "react"; import { useUserStore } from "@root/stores/user"; import { cardShadow } from "@root/utils/theme"; -import { recover } from "@root/api/auth"; -import axios, {AxiosResponse} from "axios" -import {getAuthToken, makeRequest, setAuthToken} from "@frontend/kitui" +import makeRequest from "@api/makeRequest" +import { setAuthToken } from "@frontend/kitui" interface Values { password: string; } diff --git a/src/utils/handleComponentError.ts b/src/utils/handleComponentError.ts index f1d3973..2826f01 100644 --- a/src/utils/handleComponentError.ts +++ b/src/utils/handleComponentError.ts @@ -1,4 +1,3 @@ -import { makeRequest } from "@frontend/kitui" import { ErrorInfo } from "react" diff --git a/tsconfig.extend.json b/tsconfig.extend.json index 8d8bd60..254b54a 100644 --- a/tsconfig.extend.json +++ b/tsconfig.extend.json @@ -5,7 +5,8 @@ "@root/*": ["./*"], "@utils/*": ["./utils/*"], "@components/*": ["./components/*"], - "@stores/*": ["./stores/*"] + "@stores/*": ["./stores/*"], + "@api/*": ["./api/*"] } } }