feat: request types
This commit is contained in:
parent
4e4565813a
commit
2dab3aebe5
@ -1,5 +1,5 @@
|
|||||||
import type { SuspenseProps } from "react";
|
import type { SuspenseProps } from "react";
|
||||||
import { lazy, Suspense, useEffect, useLayoutEffect, useRef } from "react";
|
import { lazy, Suspense } from "react";
|
||||||
import { lazily } from "react-lazily";
|
import { lazily } from "react-lazily";
|
||||||
import ContactFormModal from "@ui_kit/ContactForm";
|
import ContactFormModal from "@ui_kit/ContactForm";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
@ -22,7 +22,6 @@ import {
|
|||||||
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,12 +1,17 @@
|
|||||||
import { makeRequest } from "@api/makeRequest";
|
import { makeRequest } from "@api/makeRequest";
|
||||||
|
|
||||||
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
LoginRequest,
|
LoginRequest,
|
||||||
LoginResponse,
|
LoginResponse,
|
||||||
RegisterRequest,
|
RegisterRequest,
|
||||||
RegisterResponse,
|
RegisterResponse,
|
||||||
} from "@frontend/kitui";
|
} from "@frontend/kitui";
|
||||||
import { parseAxiosError } from "../utils/parse-error";
|
|
||||||
|
type RecoverResponse = {
|
||||||
|
message: string;
|
||||||
|
};
|
||||||
|
|
||||||
const API_URL = `${process.env.REACT_APP_DOMAIN}/auth`;
|
const API_URL = `${process.env.REACT_APP_DOMAIN}/auth`;
|
||||||
|
|
||||||
@ -54,7 +59,7 @@ export const login = async (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const logout = async (): Promise<[unknown, string?]> => {
|
export const logout = async (): Promise<[void | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const logoutResponse = await makeRequest<never, void>({
|
const logoutResponse = await makeRequest<never, void>({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
@ -73,7 +78,7 @@ export const logout = async (): Promise<[unknown, string?]> => {
|
|||||||
|
|
||||||
export const recover = async (
|
export const recover = async (
|
||||||
email: string,
|
email: string,
|
||||||
): Promise<[unknown | null, string?]> => {
|
): Promise<[RecoverResponse | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("email", email);
|
formData.append("email", email);
|
||||||
@ -82,7 +87,7 @@ export const recover = async (
|
|||||||
`${process.env.REACT_APP_DOMAIN}/changepwd`,
|
`${process.env.REACT_APP_DOMAIN}/changepwd`,
|
||||||
);
|
);
|
||||||
|
|
||||||
const recoverResponse = await makeRequest<unknown, unknown>({
|
const recoverResponse = await makeRequest<FormData, RecoverResponse>({
|
||||||
url: `${process.env.REACT_APP_DOMAIN}/codeword/recover`,
|
url: `${process.env.REACT_APP_DOMAIN}/codeword/recover`,
|
||||||
body: formData,
|
body: formData,
|
||||||
useToken: false,
|
useToken: false,
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import { UserAccount } from "@frontend/kitui";
|
|
||||||
import { makeRequest } from "@api/makeRequest";
|
import { makeRequest } from "@api/makeRequest";
|
||||||
|
|
||||||
import { parseAxiosError } from "@utils/parse-error";
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
|
import type { UserAccount } from "@frontend/kitui";
|
||||||
|
|
||||||
const API_URL = `${process.env.REACT_APP_DOMAIN}/customer/cart`;
|
const API_URL = `${process.env.REACT_APP_DOMAIN}/customer/cart`;
|
||||||
|
|
||||||
const payCart = async (): Promise<[UserAccount | null, string?]> => {
|
const payCart = async (): Promise<[UserAccount | null, string?]> => {
|
||||||
@ -21,9 +22,11 @@ const payCart = async (): Promise<[UserAccount | null, string?]> => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const addCartItem = async (id: string): Promise<[unknown | null, string?]> => {
|
const addCartItem = async (
|
||||||
|
id: string,
|
||||||
|
): Promise<[UserAccount | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const addedItem = await makeRequest<never, unknown>({
|
const addedItem = await makeRequest<never, UserAccount>({
|
||||||
method: "PATCH",
|
method: "PATCH",
|
||||||
url: `${API_URL}?id=${id}`,
|
url: `${API_URL}?id=${id}`,
|
||||||
});
|
});
|
||||||
@ -38,9 +41,9 @@ const addCartItem = async (id: string): Promise<[unknown | null, string?]> => {
|
|||||||
|
|
||||||
const deleteCartItem = async (
|
const deleteCartItem = async (
|
||||||
id: string,
|
id: string,
|
||||||
): Promise<[unknown | null, string?]> => {
|
): Promise<[UserAccount | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const deletedItem = await makeRequest<never, unknown>({
|
const deletedItem = await makeRequest<never, UserAccount>({
|
||||||
method: "DELETE",
|
method: "DELETE",
|
||||||
url: `${API_URL}?id=${id}`,
|
url: `${API_URL}?id=${id}`,
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { makeRequest } from "@frontend/kitui";
|
import { makeRequest } from "@frontend/kitui";
|
||||||
|
|
||||||
import { parseAxiosError } from "@utils/parse-error";
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
import type { Discount } from "@model/discounts";
|
import type { Discount } from "@model/discounts";
|
||||||
@ -9,12 +10,10 @@ export const getDiscounts = async (
|
|||||||
userId: string,
|
userId: string,
|
||||||
): Promise<[Discount[] | null, string?]> => {
|
): Promise<[Discount[] | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const { Discounts } = await makeRequest<unknown, { Discounts: Discount[] }>(
|
const { Discounts } = await makeRequest<never, { Discounts: Discount[] }>({
|
||||||
{
|
method: "GET",
|
||||||
method: "GET",
|
url: `${API_URL}/user/${userId}`,
|
||||||
url: `${API_URL}/user/${userId}`,
|
});
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
return [Discounts];
|
return [Discounts];
|
||||||
} catch (nativeError) {
|
} catch (nativeError) {
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import * as KIT from "@frontend/kitui";
|
import * as KIT from "@frontend/kitui";
|
||||||
import { Method, ResponseType, AxiosError } from "axios";
|
import { Method, ResponseType, AxiosError } from "axios";
|
||||||
|
import { redirect } from "react-router-dom";
|
||||||
import { clearAuthToken } from "@frontend/kitui";
|
import { clearAuthToken } from "@frontend/kitui";
|
||||||
|
|
||||||
import { cleanAuthTicketData } from "@root/ticket";
|
import { cleanAuthTicketData } from "@root/ticket";
|
||||||
import { clearUserData } from "@root/user";
|
import { clearUserData } from "@root/user";
|
||||||
import { clearQuizData } from "@root/quizes/store";
|
import { clearQuizData } from "@root/quizes/store";
|
||||||
import { redirect } from "react-router-dom";
|
|
||||||
|
|
||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
|
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
import { makeRequest } from "@api/makeRequest";
|
import { makeRequest } from "@api/makeRequest";
|
||||||
import { CreateQuestionRequest } from "model/question/create";
|
|
||||||
import { RawQuestion } from "model/question/question";
|
import { replaceSpacesToEmptyLines } from "@utils/replaceSpacesToEmptyLines";
|
||||||
import {
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
|
import type { CreateQuestionRequest } from "model/question/create";
|
||||||
|
import type { RawQuestion } from "model/question/question";
|
||||||
|
import type {
|
||||||
GetQuestionListRequest,
|
GetQuestionListRequest,
|
||||||
GetQuestionListResponse,
|
GetQuestionListResponse,
|
||||||
} from "@model/question/getList";
|
} from "@model/question/getList";
|
||||||
import {
|
import type {
|
||||||
EditQuestionRequest,
|
EditQuestionRequest,
|
||||||
EditQuestionResponse,
|
EditQuestionResponse,
|
||||||
} from "@model/question/edit";
|
} from "@model/question/edit";
|
||||||
import {
|
import type {
|
||||||
DeleteQuestionRequest,
|
DeleteQuestionRequest,
|
||||||
DeleteQuestionResponse,
|
DeleteQuestionResponse,
|
||||||
} from "@model/question/delete";
|
} from "@model/question/delete";
|
||||||
import {
|
import type {
|
||||||
CopyQuestionRequest,
|
CopyQuestionRequest,
|
||||||
CopyQuestionResponse,
|
CopyQuestionResponse,
|
||||||
} from "@model/question/copy";
|
} from "@model/question/copy";
|
||||||
import { replaceSpacesToEmptyLines } from "../utils/replaceSpacesToEmptyLines";
|
|
||||||
import { parseAxiosError } from "@utils/parse-error";
|
|
||||||
|
|
||||||
const API_URL = `${process.env.REACT_APP_DOMAIN}/squiz`;
|
const API_URL = `${process.env.REACT_APP_DOMAIN}/squiz`;
|
||||||
|
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
import { makeRequest } from "@api/makeRequest";
|
import { makeRequest } from "@api/makeRequest";
|
||||||
import { defaultQuizConfig } from "@model/quizSettings";
|
import { defaultQuizConfig } from "@model/quizSettings";
|
||||||
import { CopyQuizRequest, CopyQuizResponse } from "model/quiz/copy";
|
|
||||||
import { CreateQuizRequest } from "model/quiz/create";
|
|
||||||
import { DeleteQuizRequest, DeleteQuizResponse } from "model/quiz/delete";
|
|
||||||
import { EditQuizRequest, EditQuizResponse } from "model/quiz/edit";
|
|
||||||
import { GetQuizRequest, GetQuizResponse } from "model/quiz/get";
|
|
||||||
import { GetQuizListRequest, GetQuizListResponse } from "model/quiz/getList";
|
|
||||||
import { RawQuiz } from "model/quiz/quiz";
|
|
||||||
import { parseAxiosError } from "@utils/parse-error";
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
|
import type { RawQuiz } from "model/quiz/quiz";
|
||||||
|
import type { CopyQuizRequest, CopyQuizResponse } from "model/quiz/copy";
|
||||||
|
import type { CreateQuizRequest } from "model/quiz/create";
|
||||||
|
import type { DeleteQuizRequest, DeleteQuizResponse } from "model/quiz/delete";
|
||||||
|
import type { EditQuizRequest, EditQuizResponse } from "model/quiz/edit";
|
||||||
|
import type { GetQuizRequest, GetQuizResponse } from "model/quiz/get";
|
||||||
|
import type {
|
||||||
|
GetQuizListRequest,
|
||||||
|
GetQuizListResponse,
|
||||||
|
} from "model/quiz/getList";
|
||||||
|
|
||||||
type AddedQuizImagesResponse = {
|
type AddedQuizImagesResponse = {
|
||||||
[key: string]: string;
|
[key: string]: string;
|
||||||
};
|
};
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import { makeRequest } from "@api/makeRequest";
|
import { makeRequest } from "@api/makeRequest";
|
||||||
import { RawResult } from "@model/result/result";
|
|
||||||
|
|
||||||
import { parseAxiosError } from "@utils/parse-error";
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
|
import type { RawResult } from "@model/result/result";
|
||||||
|
|
||||||
interface IResultListBody {
|
interface IResultListBody {
|
||||||
to: number;
|
to: number;
|
||||||
from: string;
|
from: string;
|
||||||
@ -37,6 +38,10 @@ type ResultFilter = {
|
|||||||
to?: string;
|
to?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type ObsolescenceRequest = {
|
||||||
|
answers: number[];
|
||||||
|
};
|
||||||
|
|
||||||
const API_URL = `${process.env.REACT_APP_DOMAIN}/squiz`;
|
const API_URL = `${process.env.REACT_APP_DOMAIN}/squiz`;
|
||||||
|
|
||||||
const getResultList = async (
|
const getResultList = async (
|
||||||
@ -61,9 +66,9 @@ const getResultList = async (
|
|||||||
|
|
||||||
const deleteResult = async (
|
const deleteResult = async (
|
||||||
resultId: number,
|
resultId: number,
|
||||||
): Promise<[unknown | null, string?]> => {
|
): Promise<[string | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const deletedResult = await makeRequest<unknown, unknown>({
|
const deletedResult = await makeRequest<void, string>({
|
||||||
method: "DELETE",
|
method: "DELETE",
|
||||||
url: `${API_URL}/results/delete/${resultId}`,
|
url: `${API_URL}/results/delete/${resultId}`,
|
||||||
body: {},
|
body: {},
|
||||||
@ -79,9 +84,9 @@ const deleteResult = async (
|
|||||||
|
|
||||||
const obsolescenceResult = async (
|
const obsolescenceResult = async (
|
||||||
idResultArray: number[],
|
idResultArray: number[],
|
||||||
): Promise<[unknown | null, string?]> => {
|
): Promise<[null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const obsolescencedResult = await makeRequest<unknown, unknown>({
|
const obsolescencedResult = await makeRequest<ObsolescenceRequest, null>({
|
||||||
method: "PATCH",
|
method: "PATCH",
|
||||||
url: `${API_URL}/result/seen`,
|
url: `${API_URL}/result/seen`,
|
||||||
body: { answers: idResultArray },
|
body: { answers: idResultArray },
|
||||||
@ -99,7 +104,7 @@ const getAnswerResultList = async (
|
|||||||
resultId: number,
|
resultId: number,
|
||||||
): Promise<[IAnswerResult[] | null, string?]> => {
|
): Promise<[IAnswerResult[] | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const answerResultList = await makeRequest<unknown, IAnswerResult[]>({
|
const answerResultList = await makeRequest<never, IAnswerResult[]>({
|
||||||
method: "GET",
|
method: "GET",
|
||||||
url: `${API_URL}/result/${resultId}`,
|
url: `${API_URL}/result/${resultId}`,
|
||||||
});
|
});
|
||||||
@ -115,12 +120,12 @@ const getAnswerResultList = async (
|
|||||||
const AnswerResultListEx = async (
|
const AnswerResultListEx = async (
|
||||||
quizId: number,
|
quizId: number,
|
||||||
body: ResultFilter,
|
body: ResultFilter,
|
||||||
): Promise<[unknown | null, string?]> => {
|
): Promise<[Blob | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const answerResultListEx = await makeRequest<unknown, unknown>({
|
const answerResultListEx = await makeRequest<ResultFilter, Blob>({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: `${API_URL}/results/${quizId}/export`,
|
url: `${API_URL}/results/${quizId}/export`,
|
||||||
body: body,
|
body,
|
||||||
responseType: "blob",
|
responseType: "blob",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
import { makeRequest } from "@api/makeRequest";
|
|
||||||
import { createTicket as createTicketRequest } from "@frontend/kitui";
|
import { createTicket as createTicketRequest } from "@frontend/kitui";
|
||||||
import { parseAxiosError } from "../utils/parse-error";
|
|
||||||
|
|
||||||
import { SendTicketMessageRequest } from "@frontend/kitui";
|
import { makeRequest } from "@api/makeRequest";
|
||||||
|
|
||||||
import type { CreateTicketResponse } from "@frontend/kitui";
|
import { parseAxiosError } from "@utils/parse-error";
|
||||||
|
|
||||||
|
import type {
|
||||||
|
SendTicketMessageRequest,
|
||||||
|
CreateTicketResponse,
|
||||||
|
} from "@frontend/kitui";
|
||||||
|
|
||||||
|
type SendFileResponse = {
|
||||||
|
message: string;
|
||||||
|
};
|
||||||
|
|
||||||
const API_URL = `${process.env.REACT_APP_DOMAIN}/heruvym`;
|
const API_URL = `${process.env.REACT_APP_DOMAIN}/heruvym`;
|
||||||
|
|
||||||
@ -51,14 +58,14 @@ export const shownMessage = async (id: string): Promise<[null, string?]> => {
|
|||||||
export const sendFile = async (
|
export const sendFile = async (
|
||||||
ticketId: string,
|
ticketId: string,
|
||||||
file: File,
|
file: File,
|
||||||
): Promise<[unknown | null, string?]> => {
|
): Promise<[SendFileResponse | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const body = new FormData();
|
const body = new FormData();
|
||||||
|
|
||||||
body.append(file.name, file);
|
body.append(file.name, file);
|
||||||
body.append("ticket", ticketId);
|
body.append("ticket", ticketId);
|
||||||
|
|
||||||
const sendResponse = await makeRequest<FormData, unknown>({
|
const sendResponse = await makeRequest<FormData, SendFileResponse>({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: `${process.env.REACT_APP_DOMAIN}/heruvym/sendFiles`,
|
url: `${process.env.REACT_APP_DOMAIN}/heruvym/sendFiles`,
|
||||||
body,
|
body,
|
||||||
|
@ -5,6 +5,10 @@ import { parseAxiosError } from "@utils/parse-error";
|
|||||||
import type { UserAccount } from "@frontend/kitui";
|
import type { UserAccount } from "@frontend/kitui";
|
||||||
import type { OriginalUserAccount } from "@root/user";
|
import type { OriginalUserAccount } from "@root/user";
|
||||||
|
|
||||||
|
type RecoverUserRequest = {
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
|
||||||
export const getUser = async (): Promise<[UserAccount | null, string?]> => {
|
export const getUser = async (): Promise<[UserAccount | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const user = await makeRequest<never, UserAccount>({
|
const user = await makeRequest<never, UserAccount>({
|
||||||
@ -47,7 +51,7 @@ export const recoverUser = async (
|
|||||||
password: string,
|
password: string,
|
||||||
): Promise<[unknown | null, string?]> => {
|
): Promise<[unknown | null, string?]> => {
|
||||||
try {
|
try {
|
||||||
const recoverResponse = await makeRequest<{ password: string }, unknown>({
|
const recoverResponse = await makeRequest<RecoverUserRequest, unknown>({
|
||||||
url: `${process.env.REACT_APP_DOMAIN}/user`,
|
url: `${process.env.REACT_APP_DOMAIN}/user`,
|
||||||
method: "PATCH",
|
method: "PATCH",
|
||||||
body: { password },
|
body: { password },
|
||||||
|
@ -4,7 +4,6 @@ import {
|
|||||||
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, useMemo, useState } from "react";
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
@ -137,6 +136,10 @@ export default () => {
|
|||||||
addOrUpdateUnauthMessages(messages);
|
addOrUpdateUnauthMessages(messages);
|
||||||
}, []),
|
}, []),
|
||||||
onError: useCallback((error: Error) => {
|
onError: useCallback((error: Error) => {
|
||||||
|
if (error.name === "CanceledError") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const [message] = parseAxiosError(error);
|
const [message] = parseAxiosError(error);
|
||||||
if (message) enqueueSnackbar(message);
|
if (message) enqueueSnackbar(message);
|
||||||
}, []),
|
}, []),
|
||||||
|
Loading…
Reference in New Issue
Block a user