front-hub/src/utils/hooks/useAutoPay.ts
2025-01-24 12:58:42 +03:00

71 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { payCart } from "@root/api/cart";
import { calcTimeOfReadyPayCart, cancelPayCartProcess, setNotEnoughMoneyAmount, setSiteReadyPayCart, startPayCartProcess, useNotEnoughMoneyAmount } from "@root/stores/notEnoughMoneyAmount";
import { useUserStore } from "@root/stores/user";
import moment from "moment";
import { enqueueSnackbar } from "notistack";
import { useEffect } from "react";
import { useSearchParams } from "react-router-dom";
import { RSCOpen } from "@root/stores/requestSquizCreate";
import { useCartTariffs } from "./useCartTariffs";
export const useAfterPay = () => {
const [searchParams, setSearchParams] = useSearchParams();
const userId = useUserStore(store => store.userId)
const userAccount = useUserStore(state => state.userAccount);
const siteReadyPayCart = useNotEnoughMoneyAmount(state => state.siteReadyPayCart);
const cartTariffs = useCartTariffs();
// console.log(cartTariffs)
// const isCC = cartTariffs !== null && cartTariffs !== undefined && cartTariffs.length > 0 && cartTariffs.some(t => t.privileges[0].privilegeId === "quizManual")
const purpose = searchParams.get("purpose");
const from = searchParams.get("from");
const action = searchParams.get("action");
const paymentUserId = searchParams.get("userid");
useEffect(() => {
//Звёзды сошлись, будем оплачивать корзину
if (from !== "quiz" && paymentUserId && paymentUserId === userId) {
//Чистим url адрес от параметров. (Если нет action. Если есть - значит мы пришли из квиза)
if (action === null) setSearchParams({}, { replace: true })
// navigate(`/tariffs`, {
// replace: true,
// });
if (purpose === "paycart") {
(async () => {
//Проверяем можем ли мы оплатить корзину здесь и сейчас
const [, payCartError] = await payCart();
if (payCartError) {
//Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты
startPayCartProcess(paymentUserId)
} else {
enqueueSnackbar("Товары успешно приобретены")
cancelPayCartProcess()
if (true) RSCOpen()
}
})()
}
}
}, [purpose, from, paymentUserId])
useEffect(() => {
if (userId !== null && siteReadyPayCart !== null && siteReadyPayCart[userId] !== undefined) {
const deadline = siteReadyPayCart[userId]
if (calcTimeOfReadyPayCart(deadline)) {
//Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.
(async () => {
const [, payCartError] = await payCart();
if (!payCartError) {
enqueueSnackbar("Товары успешно приобретены")
cancelPayCartProcess()
}
})()
}
}
}, [userAccount, userId, siteReadyPayCart])
}