2024-07-29 02:56:25 +00:00
|
|
|
|
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";
|
2024-07-29 03:42:54 +00:00
|
|
|
|
const action = searchParams.get("action");
|
2024-07-29 02:56:25 +00:00
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
//Звёзды сошлись, будем оплачивать корзину
|
|
|
|
|
if (from !== "quiz" && paymentUserId && paymentUserId === userId) {
|
2024-07-29 03:42:54 +00:00
|
|
|
|
//Чистим url адрес от параметров. (Если нет action. Если есть - значит мы пришли из квиза)
|
|
|
|
|
if (action === null) navigate(`/tariffs`, {
|
2024-07-29 02:56:25 +00:00
|
|
|
|
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])
|
|
|
|
|
}
|