import { cartApi } from "@api/cart"; import { useUserStore } from "@/stores/user"; import moment from "moment"; import { enqueueSnackbar } from "notistack"; import { useEffect } from "react"; import { useNavigate, useSearchParams } from "react-router-dom"; import { calcTimeOfReadyPayCart, cancelPayCartProcess, startPayCartProcess, useNotEnoughMoneyAmount } from "@/stores/notEnoughMoneyAmount"; export const useAfterPay = () => { const navigate = useNavigate(); const [searchParams, setSearchParams] = useSearchParams(); const userId = useUserStore(store => store.userId) const userAccount = useUserStore(state => state.userAccount); const siteReadyPayCart = useNotEnoughMoneyAmount(state => state.siteReadyPayCart); const purpose = searchParams.get("purpose"); const paymentUserId = searchParams.get("userid"); useEffect(() => { //Звёзды сошлись, будем оплачивать корзину if (paymentUserId && paymentUserId === userId) { if (purpose === "paycart") { setSearchParams({}, { replace: true }); (async () => { //Проверяем можем ли мы оплатить корзину здесь и сейчас const [, payCartError] = await cartApi.pay(); console.log("попытка оплаты не удалась") if (payCartError) { //Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты startPayCartProcess(paymentUserId) } else { enqueueSnackbar("Товары успешно приобретены") cancelPayCartProcess() } })() } } }, [purpose, paymentUserId]) useEffect(() => { if (userId !== null && siteReadyPayCart !== null && siteReadyPayCart[userId] !== undefined) { const deadline = siteReadyPayCart[userId] if (calcTimeOfReadyPayCart(deadline)) { //Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло. (async () => { console.log("Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.") const [, payCartError] = await cartApi.pay(); if (!payCartError) { enqueueSnackbar("Товары успешно приобретены") cancelPayCartProcess() } })() } } }, [userAccount, userId, siteReadyPayCart]) }