From ac7c0017388d179dbc9b68fbcc3786733109727f Mon Sep 17 00:00:00 2001 From: Nastya Date: Sun, 8 Jun 2025 23:23:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=BF=D0=BB=D0=B0=D1=82=D0=B0=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D1=85=D0=B0=D0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PersonalizationAI/PersonalizationAI.tsx | 64 +++++++++++++------ src/pages/Tariffs/Tariffs.tsx | 2 +- 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/pages/PersonalizationAI/PersonalizationAI.tsx b/src/pages/PersonalizationAI/PersonalizationAI.tsx index 5e3c8c3b..bc8b2dc4 100644 --- a/src/pages/PersonalizationAI/PersonalizationAI.tsx +++ b/src/pages/PersonalizationAI/PersonalizationAI.tsx @@ -11,6 +11,10 @@ import { useSnackbar } from "notistack"; import { PayModal } from "./PayModal"; import { useUserStore } from "@/stores/user"; import { cartApi } from "@/api/cart"; +import { outCart } from "../Tariffs/Tariffs"; +import { inCart } from "../Tariffs/Tariffs"; +import { isTestServer } from "@/utils/hooks/useDomainDefine"; +import { useToken } from "@frontend/kitui"; const tariff = "6844b8858258f5cc35791ef7"; export default function PersonalizationAI() { @@ -22,6 +26,9 @@ export default function PersonalizationAI() { const quiz = useCurrentQuiz(); const { enqueueSnackbar } = useSnackbar(); const privilegesOfUser = useUserStore((state) => state.userAccount?.privileges); + const user = useUserStore((state) => state.customerAccount); + const token = useToken(); + const userId = useUserStore((state) => state.userId); const [isStartCreate, setStartCreate] = useState(false); const [gender, setGender] = useState(''); @@ -177,26 +184,43 @@ export default function PersonalizationAI() { } }; - const tryBuy = () => { - alert("старт покупки") - /* - // Добавляем тариф в корзину - const [_, addError] = await cartApi.add(tariff); - if (addError) { - enqueueSnackbar('Не удалось добавить тариф в корзину', { variant: 'error' }); - return false; - } - - // Пытаемся оплатить - const [data, payError] = await cartApi.pay(); - if (payError) { - enqueueSnackbar('Не удалось оплатить тариф', { variant: 'error' }); - return false; - } - - return true; - */ - } + const tryBuy = async ({ id, price }: { id: string; price: number }) => { + //Если в корзине что-то было - выкладываем содержимое и запоминаем чо там лежало + if (user.cart.length > 0) { + outCart(user.cart); + } + //Добавляем желаемый тариф в корзину + const [_, addError] = await cartApi.add(tariff); + + if (addError) { + //Развращаем товары в корзину + inCart(); + + return; + } + + //Если нам хватает денежек - покупаем тариф + const [data, payError] = await cartApi.pay(); + + if (payError || !data) { + //если денег не хватило + if (payError?.includes("insufficient funds") || payError?.includes("Payment Required")) { + var link = document.createElement("a"); + link.href = `https://${isTestServer ? "s" : ""}hub.pena.digital/quizpayment?action=squizpay&dif=50000&data=${token}&userid=${userId}&from=AI`; + document.body.appendChild(link); + link.click(); + return; + } + + //другая ошибка + enqueueSnackbar("Произошла ошибка. Попробуйте позже"); + + return; + } + + //Развращаем товары в корзину + inCart(); + }; return ( <> diff --git a/src/pages/Tariffs/Tariffs.tsx b/src/pages/Tariffs/Tariffs.tsx index 005bea37..5a886bb0 100644 --- a/src/pages/Tariffs/Tariffs.tsx +++ b/src/pages/Tariffs/Tariffs.tsx @@ -387,7 +387,7 @@ export const inCart = () => { localStorage.setItem("saveCart", "[]"); } }; -const outCart = (cart: string[]) => { +export const outCart = (cart: string[]) => { //Сделаем муторно и подольше, зато при прерывании сессии данные потеряются минимально if (cart.length > 0) { cart.forEach(async (id: string) => {