frontPanel/src/api/ticket.ts

100 lines
2.5 KiB
TypeScript
Raw Normal View History

2024-05-15 11:44:10 +00:00
import { createTicket as createTicketRequest } from "@frontend/kitui";
2024-02-06 14:39:02 +00:00
2024-05-16 13:40:52 +00:00
import { makeRequest } from "@api/makeRequest";
import { parseAxiosError } from "@utils/parse-error";
2024-02-06 14:39:02 +00:00
2024-05-16 13:40:52 +00:00
import type {
SendTicketMessageRequest,
CreateTicketResponse,
} from "@frontend/kitui";
type SendFileResponse = {
message: string;
};
2024-05-15 11:44:10 +00:00
2024-05-29 12:12:56 +00:00
const API_URL = `${process.env.REACT_APP_DOMAIN}/heruvym/v1.0.0`;
2024-02-06 14:39:02 +00:00
2024-05-13 13:24:41 +00:00
export const sendTicketMessage = async (
2024-02-06 14:39:02 +00:00
ticketId: string,
message: string,
2024-05-13 13:24:41 +00:00
): Promise<[null, string?]> => {
2024-02-06 14:39:02 +00:00
try {
const sendTicketMessageResponse = await makeRequest<
SendTicketMessageRequest,
null
>({
2024-05-13 13:24:41 +00:00
url: `${API_URL}/send`,
2024-02-06 14:39:02 +00:00
method: "POST",
useToken: true,
body: { ticket: ticketId, message: message, lang: "ru", files: [] },
});
return [sendTicketMessageResponse];
} catch (nativeError) {
const [error] = parseAxiosError(nativeError);
return [null, `Не удалось отправить сообщение. ${error}`];
}
2024-05-13 13:24:41 +00:00
};
2024-02-06 14:39:02 +00:00
2024-05-13 13:24:41 +00:00
export const shownMessage = async (id: string): Promise<[null, string?]> => {
2024-02-06 14:39:02 +00:00
try {
const shownMessageResponse = await makeRequest<{ id: string }, null>({
2024-05-13 13:24:41 +00:00
url: `${API_URL}/shown`,
2024-02-06 14:39:02 +00:00
method: "POST",
useToken: true,
body: { id },
});
return [shownMessageResponse];
} catch (nativeError) {
const [error] = parseAxiosError(nativeError);
return [null, `Не удалось прочесть сообщение. ${error}`];
}
2024-05-13 13:24:41 +00:00
};
2024-05-15 11:44:10 +00:00
export const sendFile = async (
ticketId: string,
file: File,
2024-05-16 13:40:52 +00:00
): Promise<[SendFileResponse | null, string?]> => {
2024-05-15 11:44:10 +00:00
try {
const body = new FormData();
body.append(file.name, file);
body.append("ticket", ticketId);
2024-05-16 13:40:52 +00:00
const sendResponse = await makeRequest<FormData, SendFileResponse>({
2024-05-15 11:44:10 +00:00
method: "POST",
2024-05-29 12:12:56 +00:00
url: `${API_URL}/sendFiles`,
2024-05-15 11:44:10 +00:00
body,
});
return [sendResponse];
} catch (nativeError) {
const [error] = parseAxiosError(nativeError);
return [null, `Не удалось отправить файл. ${error}`];
}
};
export const createTicket = async (
message: string,
useToken: boolean,
): Promise<[CreateTicketResponse | null, string?]> => {
try {
const createdTicket = await createTicketRequest({
2024-06-02 23:29:40 +00:00
url: `${process.env.REACT_APP_DOMAIN}/heruvym/v1.0.0/create`,
2024-05-15 11:44:10 +00:00
body: { Title: "Unauth title", Message: message },
useToken,
});
return [createdTicket];
} catch (nativeError) {
const [error] = parseAxiosError(nativeError);
return [null, `Не удалось создать тикет. ${error}`];
}
};