diff --git a/src/kitUI/Cart/Cart.tsx b/src/kitUI/Cart/Cart.tsx index edfaf09..f7af09d 100644 --- a/src/kitUI/Cart/Cart.tsx +++ b/src/kitUI/Cart/Cart.tsx @@ -33,7 +33,7 @@ import { findPrivilegeById } from "@root/stores/privilegesStore"; import { testUser } from "@root/stores/mocks/user"; import { useTariffStore } from "@root/stores/tariffsStore"; import { Discount } from "@root/model/discount"; -import { authStore } from "@root/stores/auth"; +import { useDiscountStore } from "@root/stores/discounts"; import { requestPrivilegies } from "@root/services/privilegies.service"; import { requestDiscounts } from "@root/services/discounts.service"; @@ -59,13 +59,11 @@ interface MergedTariff { export default function Cart({ selectedTariffs }: Props) { let cartTariffs = Object.values(useTariffStore().tariffs); - // const discounts = useDiscountStore((store) => store.discounts); - const [discounts, setDiscounts] = useState([]); + const discounts = useDiscountStore((store) => store.discounts); const cartTotal = useCartStore((state) => state.cartTotal); const setCartTotal = useCartStore((store) => store.setCartTotal); const [couponField, setCouponField] = useState(""); const [loyaltyField, setLoyaltyField] = useState(""); - const makeRequest = authStore.getState().makeRequest; const [errorMessage, setErrorMessage] = useState(null); const [isNonCommercial, setIsNonCommercial] = useState(false); @@ -152,17 +150,6 @@ export default function Cart({ selectedTariffs }: Props) { await requestPrivilegies(); await requestDiscounts(); - //рассчитать - const dis = await makeRequest({ - url: "https://admin.pena.digital/price/discounts", - method: "get", - useToken: true, - bearer: true, - }); - console.log(dis); - // @ts-ignore - setDiscounts(dis.Discounts); - const cartItems = cartTariffs .filter((tariff) => selectedTariffs.includes(tariff.id)) .map((tariff) => createCartItem(tariff)); @@ -173,15 +160,11 @@ export default function Cart({ selectedTariffs }: Props) { if (!isFinite(loyaltyValue)) loyaltyValue = 0; - const activeDiscounts = discounts.filter( - (discount) => !discount.Deprecated - ); - const cartData = calcCartData({ user: testUser, purchasesAmount: loyaltyValue, cartItems, - discounts: activeDiscounts, + discounts, isNonCommercial, coupon: couponField, }); diff --git a/src/services/discounts.service.ts b/src/services/discounts.service.ts index c624157..ed2d609 100644 --- a/src/services/discounts.service.ts +++ b/src/services/discounts.service.ts @@ -1,25 +1,32 @@ -import { authStore } from "@root/stores/auth"; import { setDiscounts } from "@root/stores/discounts"; +import { authStore } from "@root/stores/auth"; -import type { GetDiscountResponse } from "@root/model/discount"; +import type { GetDiscountResponse, Discount } from "@root/model/discount"; -export const requestDiscounts = async () => { - const { makeRequest } = authStore.getState(); - const controller = new AbortController(); +const baseUrl = + process.env.NODE_ENV === "production" + ? "/price" + : "https://admin.pena.digital/price"; - makeRequest({ - url: "https://admin.pena.digital/price/discounts", - method: "get", - useToken: true, - bearer: true, - signal: controller.signal, - }) - .then((result) => { - setDiscounts(result.Discounts); - }) - .catch((error) => { - console.log("Error fetching discounts", error); +const { makeRequest } = authStore.getState(); + +const filterDiscounts = (discounts: Discount[]) => { + const activeDiscounts = discounts.filter((discount) => !discount.Deprecated); + + setDiscounts(activeDiscounts); +}; + +export const requestDiscounts = async (): Promise => { + try { + const { Discounts } = await makeRequest({ + url: baseUrl + "/discounts", + method: "get", + useToken: true, + bearer: true, }); - return () => controller.abort(); + filterDiscounts(Discounts); + } catch { + throw new Error("Ошибка при получении скидок"); + } };