import { payCart } from "@root/api/cart"; import { setSiteReadyPayCart } from "@root/stores/notEnoughMoneyAmount"; import { useUserStore } from "@root/stores/user"; import moment from "moment"; import { enqueueSnackbar } from "notistack"; import { useEffect } from "react"; import { useNavigate, useSearchParams } from "react-router-dom"; export const useAfterPay = () => { const navigate = useNavigate(); const [searchParams, setSearchParams] = useSearchParams(); const paymentUserId = searchParams.get("userid"); const userId = useUserStore(store => store.userId) const purpose = searchParams.get("purpose"); const from = searchParams.get("from") || "hub"; const action = searchParams.get("action"); useEffect(() => { //Звёзды сошлись, будем оплачивать корзину if (from !== "quiz" && paymentUserId && paymentUserId === userId) { //Чистим url адрес от параметров. (Если нет action. Если есть - значит мы пришли из квиза) if (action === null) navigate(`/tariffs`, { replace: true, }); if (purpose === "paycart") { (async () => { //Проверяем можем ли мы оплатить корзину здесь и сейчас const [, payCartError] = await payCart(); if (payCartError) { //Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты (потом проверим .isAfter) setSiteReadyPayCart({ [paymentUserId]: moment().add(20, 'minutes').format("x") }) } else { enqueueSnackbar("Товары успешно приобретены") } })() } } }, [purpose, from, paymentUserId]) }