2024-04-16 20:20:46 +00:00
|
|
|
|
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,
|
|
|
|
|
};
|