мейк реквест в обёртке

This commit is contained in:
Nastya 2024-04-16 23:20:46 +03:00
parent 06a462edfc
commit f849bb84a1
16 changed files with 1343 additions and 1282 deletions

@ -21,10 +21,10 @@ import {
createUserAccount, createUserAccount,
devlog, devlog,
getMessageFromFetchError, getMessageFromFetchError,
makeRequest,
UserAccount, UserAccount,
useUserFetcher, useUserFetcher,
} from "@frontend/kitui"; } from "@frontend/kitui";
import makeRequest from "@api/makeRequest";
import type { OriginalUserAccount } from "@root/user"; import type { OriginalUserAccount } from "@root/user";
import { import {
clearUserData, clearUserData,

@ -1,4 +1,4 @@
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import type { import type {
LoginRequest, LoginRequest,

@ -1,5 +1,5 @@
import { UserAccount, makeRequest } from "@frontend/kitui"; import { UserAccount } from "@frontend/kitui";
import { AxiosError } from "axios"; import makeRequest from "@api/makeRequest";
import { parseAxiosError } from "@utils/parse-error"; import { parseAxiosError } from "@utils/parse-error";

31
src/api/makeRequest.ts Normal file

@ -0,0 +1,31 @@
import * as KIT from "@frontend/kitui";
import { Method, ResponseType, AxiosError } from "axios";
import { clearAuthToken } from "@frontend/kitui";
import { cleanAuthTicketData } from "@root/ticket";
import { clearUserData } from "@root/user";
import { clearQuizData } from "@root/quizes/store";
import { redirect } from "react-router-dom";
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<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;
//@ts-ignore
if (error.response?.status === 400 && error.response?.data?.message === "refreshToken is empty") {
cleanAuthTicketData();
clearAuthToken();
clearUserData();
clearQuizData();
redirect("/");
}
throw e
};
};
export default makeRequest;

@ -1,4 +1,4 @@
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { parseAxiosError } from "@utils/parse-error"; import { parseAxiosError } from "@utils/parse-error";

@ -1,4 +1,4 @@
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { CreateQuestionRequest } from "model/question/create"; import { CreateQuestionRequest } from "model/question/create";
import { RawQuestion } from "model/question/question"; import { RawQuestion } from "model/question/question";
import { import {

@ -1,4 +1,4 @@
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { defaultQuizConfig } from "@model/quizSettings"; import { defaultQuizConfig } from "@model/quizSettings";
import { CopyQuizRequest, CopyQuizResponse } from "model/quiz/copy"; import { CopyQuizRequest, CopyQuizResponse } from "model/quiz/copy";
import { CreateQuizRequest } from "model/quiz/create"; import { CreateQuizRequest } from "model/quiz/create";

@ -1,4 +1,4 @@
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { RawResult } from "@model/result/result"; import { RawResult } from "@model/result/result";
interface IResultListBody { interface IResultListBody {

@ -1,4 +1,4 @@
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { parseAxiosError } from "@utils/parse-error"; import { parseAxiosError } from "@utils/parse-error";

@ -1,4 +1,4 @@
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { parseAxiosError } from "../utils/parse-error"; import { parseAxiosError } from "../utils/parse-error";
import { SendTicketMessageRequest } from "@frontend/kitui"; import { SendTicketMessageRequest } from "@frontend/kitui";

@ -1,7 +1,8 @@
import { logout } from "@api/auth"; import { logout } from "@api/auth";
import { activatePromocode } from "@api/promocode"; import { activatePromocode } from "@api/promocode";
import type { Tariff } from "@frontend/kitui"; import type { Tariff } from "@frontend/kitui";
import { clearAuthToken, makeRequest, useToken } from "@frontend/kitui"; import { useToken } from "@frontend/kitui";
import makeRequest from "@api/makeRequest";
import ArrowLeft from "@icons/questionsPage/arrowLeft"; import ArrowLeft from "@icons/questionsPage/arrowLeft";
import type { GetTariffsResponse } from "@model/tariff"; import type { GetTariffsResponse } from "@model/tariff";
import { import {

@ -18,8 +18,8 @@ import { object, string } from "yup";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { useUserStore } from "@root/user"; import { useUserStore } from "@root/user";
import { getAuthToken, makeRequest, setAuthToken } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { FormContactFieldName } from "@model/quizSettings"; import { setAuthToken } from "@frontend/kitui";
import { parseAxiosError } from "@utils/parse-error"; import { parseAxiosError } from "@utils/parse-error";
interface Values { interface Values {
password: string; password: string;

@ -15,7 +15,7 @@ import {
import { deleteQuiz, setEditQuizId } from "@root/quizes/actions"; import { deleteQuiz, setEditQuizId } from "@root/quizes/actions";
import { Link, useNavigate } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom";
import { inCart } from "../../pages/Tariffs/Tariffs"; import { inCart } from "../../pages/Tariffs/Tariffs";
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { enqueueSnackbar } from "notistack"; import { enqueueSnackbar } from "notistack";
import { useDomainDefine } from "@utils/hooks/useDomainDefine"; import { useDomainDefine } from "@utils/hooks/useDomainDefine";
import CopyIcon from "@icons/CopyIcon"; import CopyIcon from "@icons/CopyIcon";

@ -3,7 +3,7 @@ import { useUserStore } from "@root/user";
import { Box, Button, Modal, Typography } from "@mui/material"; import { Box, Button, Modal, Typography } from "@mui/material";
import { mutate } from "swr"; import { mutate } from "swr";
import { enqueueSnackbar } from "notistack"; import { enqueueSnackbar } from "notistack";
import { makeRequest } from "@frontend/kitui"; import makeRequest from "@api/makeRequest";
import { parseAxiosError } from "@utils/parse-error"; import { parseAxiosError } from "@utils/parse-error";
export function CheckFastlink() { export function CheckFastlink() {

@ -1,10 +1,10 @@
import { import {
TicketMessage, TicketMessage,
makeRequest,
useSSESubscription, useSSESubscription,
useTicketMessages, useTicketMessages,
useTicketsFetcher, useTicketsFetcher,
} from "@frontend/kitui"; } from "@frontend/kitui";
import makeRequest from "@api/makeRequest";
import FloatingSupportChat from "./FloatingSupportChat"; import FloatingSupportChat from "./FloatingSupportChat";
import { useUserStore } from "@root/user"; import { useUserStore } from "@root/user";
import { useCallback, useEffect, useState } from "react"; import { useCallback, useEffect, useState } from "react";

2561
yarn.lock

File diff suppressed because it is too large Load Diff