frontPanel/src/api/cart.ts

61 lines
1.6 KiB
TypeScript
Raw Normal View History

import { UserAccount } from "@frontend/kitui";
2024-05-13 13:24:41 +00:00
import { makeRequest } from "@api/makeRequest";
2024-04-01 14:49:00 +00:00
import { parseAxiosError } from "@utils/parse-error";
2024-05-15 11:44:10 +00:00
const API_URL = `${process.env.REACT_APP_DOMAIN}/customer/cart/`;
2024-04-01 14:49:00 +00:00
2024-05-15 11:44:10 +00:00
const payCart = async (): Promise<[UserAccount | null, string?]> => {
2024-04-01 14:49:00 +00:00
try {
const payCartResponse = await makeRequest<never, UserAccount>({
method: "POST",
2024-05-15 11:44:10 +00:00
url: `${API_URL}/pay`,
2024-04-01 14:49:00 +00:00
useToken: true,
});
return [payCartResponse];
} 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
const addCartItem = async (id: string): Promise<[unknown | null, string?]> => {
try {
const addedItem = await makeRequest<never, unknown>({
method: "PATCH",
url: `${API_URL}?id=${id}`,
});
return [addedItem];
} catch (nativeError) {
const [error] = parseAxiosError(nativeError);
return [null, `Не удалось добавить товар в корзину. ${error}`];
}
};
const deleteCartItem = async (
id: string,
): Promise<[unknown | null, string?]> => {
try {
const deletedItem = await makeRequest<never, unknown>({
method: "DELETE",
url: `${API_URL}?id=${id}`,
});
return [deletedItem];
} catch (nativeError) {
const [error] = parseAxiosError(nativeError);
return [null, `Не удалось удалить товар из корзины. ${error}`];
}
};
export const cartApi = {
pay: payCart,
add: addCartItem,
delete: deleteCartItem,
};