front-hub/src/utils/hooks/useAutoPay.ts

42 lines
1.9 KiB
TypeScript
Raw Normal View History

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])
}