71 lines
3.1 KiB
TypeScript
71 lines
3.1 KiB
TypeScript
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])
|
||
} |