import { makeRequest } from "@frontend/kitui"; import { CreatePromocodeBody, GetPromocodeListBody, Promocode, PromocodeList } from "@root/model/promocodes"; import { parseAxiosError } from "@root/utils/parse-error"; import { isAxiosError } from "axios"; const baseUrl = process.env.REACT_APP_DOMAIN + "/codeword/promocode"; const getPromocodeList = async (body: GetPromocodeListBody) => { try { const promocodeListResponse = await makeRequest< GetPromocodeListBody, PromocodeList >({ url: baseUrl + "/getList", method: "POST", body, useToken: false, }); return promocodeListResponse; } catch (nativeError) { const [error] = parseAxiosError(nativeError); throw new Error(`Ошибка при получении списка промокодов. ${error}`); } }; const createPromocode = async (body: CreatePromocodeBody) => { try { const createPromocodeResponse = await makeRequest< CreatePromocodeBody, Promocode >({ url: baseUrl + "/create", method: "POST", body, useToken: false, }); return createPromocodeResponse; } catch (nativeError) { if (isAxiosError(nativeError) && nativeError.response?.data.error === "Duplicate Codeword") { throw new Error(`Промокод уже существует`); } const [error] = parseAxiosError(nativeError); throw new Error(`Ошибка создания промокода. ${error}`); } }; const deletePromocode = async (id: string): Promise => { try { await makeRequest({ url: `${baseUrl}/${id}`, method: "DELETE", useToken: false, }); } catch (nativeError) { const [error] = parseAxiosError(nativeError); throw new Error(`Ошибка удаления промокода. ${error}`); } }; export const promocodeApi = { getPromocodeList, createPromocode, deletePromocode, };