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