frontPanel/src/utils/hooks/useAutoPay.ts

66 lines
2.8 KiB
TypeScript
Raw Normal View History

import { cartApi } from "@api/cart";
import { useUserStore } from "@/stores/user";
2024-08-03 09:19:35 +00:00
import moment from "moment";
import { enqueueSnackbar } from "notistack";
import { useEffect } from "react";
import { redirect, useNavigate, useSearchParams } from "react-router-dom";
import { calcTimeOfReadyPayCart, cancelPayCartProcess, startPayCartProcess, useNotEnoughMoneyAmount } from "@/stores/notEnoughMoneyAmount";
import { startCC } from "@/stores/cc";
2024-08-03 09:19:35 +00:00
export const useAfterPay = () => {
const navigate = useNavigate();
const [searchParams, setSearchParams] = useSearchParams();
const userId = useUserStore(store => store.userId)
const userAccount = useUserStore(state => state.userAccount);
const siteReadyPayCart = useNotEnoughMoneyAmount(state => state.siteReadyPayCart);
2024-08-03 09:19:35 +00:00
const purpose = searchParams.get("purpose");
const paymentUserId = searchParams.get("userid");
const currentCC = searchParams.get("cc");
2024-08-03 09:19:35 +00:00
useEffect(() => {
//Звёзды сошлись, будем оплачивать корзину
if (paymentUserId && paymentUserId === userId) {
2024-08-03 09:19:35 +00:00
if (purpose === "paycart") {
setSearchParams({}, { replace: true });
if (currentCC) { startCC() }
2024-08-03 09:19:35 +00:00
(async () => {
//Проверяем можем ли мы оплатить корзину здесь и сейчас
const [, payCartError] = await cartApi.pay();
2024-08-03 09:19:35 +00:00
if (payCartError) {
console.log("попытка оплаты не удалась")
//Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты
startPayCartProcess(paymentUserId)
2024-08-03 09:19:35 +00:00
} else {
enqueueSnackbar("Товары успешно приобретены")
if (currentCC) navigate("tariffs")
cancelPayCartProcess()
}
})()
}
}
}, [purpose, paymentUserId])
useEffect(() => {
if (userId !== null && siteReadyPayCart !== null && siteReadyPayCart[userId] !== undefined) {
const deadline = siteReadyPayCart[userId]
if (calcTimeOfReadyPayCart(deadline)) {
//Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.
(async () => {
console.log("Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.")
const [, payCartError] = await cartApi.pay();
if (!payCartError) {
enqueueSnackbar("Товары успешно приобретены")
cancelPayCartProcess()
2024-08-03 09:19:35 +00:00
}
})()
}
}
}, [userAccount, userId, siteReadyPayCart])
}