автооткрытие модалки запроса после удачного и неудачного покупки тарифа на создание. хранение инфо об этом
This commit is contained in:
parent
fbd5783061
commit
5a029c01a9
@ -40,6 +40,7 @@ import { getTariffs } from "@api/tariff";
|
|||||||
import type { Discount } from "@model/discounts";
|
import type { Discount } from "@model/discounts";
|
||||||
import { Other } from "./pages/Other";
|
import { Other } from "./pages/Other";
|
||||||
import { ModalRequestCreate } from "./ModalRequestCreate";
|
import { ModalRequestCreate } from "./ModalRequestCreate";
|
||||||
|
import { cancelCC, useCC } from "@/stores/cc";
|
||||||
|
|
||||||
const StepperText: Record<string, string> = {
|
const StepperText: Record<string, string> = {
|
||||||
day: "Тарифы на время",
|
day: "Тарифы на время",
|
||||||
@ -64,6 +65,7 @@ function TariffPage() {
|
|||||||
const [selectedItem, setSelectedItem] = useState<TypePages>("day");
|
const [selectedItem, setSelectedItem] = useState<TypePages>("day");
|
||||||
const { isTestServer } = useDomainDefine();
|
const { isTestServer } = useDomainDefine();
|
||||||
const [promocodeField, setPromocodeField] = useState<string>("");
|
const [promocodeField, setPromocodeField] = useState<string>("");
|
||||||
|
const cc = useCC(store => store.cc)
|
||||||
|
|
||||||
const getTariffsList = async (): Promise<Tariff[]> => {
|
const getTariffsList = async (): Promise<Tariff[]> => {
|
||||||
const tariffsList: Tariff[] = [];
|
const tariffsList: Tariff[] = [];
|
||||||
@ -116,6 +118,12 @@ function TariffPage() {
|
|||||||
get();
|
get();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (cc) {
|
||||||
|
setIsRequestCreate(true)
|
||||||
|
cancelCC()
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
if (!user || !tariffs || !discounts) return <LoadingPage />;
|
if (!user || !tariffs || !discounts) return <LoadingPage />;
|
||||||
|
|
||||||
const openModalHC = (tariffInfo: any) => setOpenModal(tariffInfo);
|
const openModalHC = (tariffInfo: any) => setOpenModal(tariffInfo);
|
||||||
@ -144,6 +152,7 @@ function TariffPage() {
|
|||||||
let cashDif = Number(payError.split(":")[1]);
|
let cashDif = Number(payError.split(":")[1]);
|
||||||
var link = document.createElement("a");
|
var link = document.createElement("a");
|
||||||
link.href = `https://${isTestServer ? "s" : ""}hub.pena.digital/quizpayment?action=squizpay&dif=${cashDif}&data=${token}&userid=${userId}`;
|
link.href = `https://${isTestServer ? "s" : ""}hub.pena.digital/quizpayment?action=squizpay&dif=${cashDif}&data=${token}&userid=${userId}`;
|
||||||
|
if (cc) link.href = link.href + "cc=true"//после покупки тарифа и возвращения будем знать что надо открыть модалку
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
link.click();
|
link.click();
|
||||||
return;
|
return;
|
||||||
@ -161,6 +170,9 @@ function TariffPage() {
|
|||||||
Number(data.wallet.cash) / 100,
|
Number(data.wallet.cash) / 100,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//cc - пометка что мы хотим заказать квиз. Если хотели, то открываем модалку
|
||||||
|
if (cc) setIsRequestCreate(true)
|
||||||
|
cancelCC()//но в любом случае в конце перехотим
|
||||||
enqueueSnackbar("Тариф успешно приобретён");
|
enqueueSnackbar("Тариф успешно приобретён");
|
||||||
|
|
||||||
//Развращаем товары в корзину
|
//Развращаем товары в корзину
|
||||||
@ -213,6 +225,7 @@ function TariffPage() {
|
|||||||
setIsRequestCreate(true)
|
setIsRequestCreate(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Container
|
<Container
|
||||||
@ -430,6 +443,7 @@ const outCart = (cart: string[]) => {
|
|||||||
|
|
||||||
if (deleteError) {
|
if (deleteError) {
|
||||||
console.error(deleteError);
|
console.error(deleteError);
|
||||||
|
cancelCC()//мы хотели открыть модалку после покупки тарифа на создание квиза, но не вышло и модалку не откроем
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -24,8 +24,7 @@ export const Other = ({
|
|||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
const isTablet = useMediaQuery(theme.breakpoints.down(1000));
|
const isTablet = useMediaQuery(theme.breakpoints.down(1000));
|
||||||
const sendRequestToCreate = userPrivilegies?.quizManual.amount > 0 ? startRequestCreate : undefined
|
const sendRequestToCreate = userPrivilegies?.quizManual.amount > 0 ? startRequestCreate : undefined
|
||||||
console.log("sendRequestToCreate")
|
|
||||||
console.log(sendRequestToCreate)
|
|
||||||
switch (selectedItem) {
|
switch (selectedItem) {
|
||||||
case "hide":
|
case "hide":
|
||||||
const filteredBadgeTariffs = tariffs.filter((tariff) => {
|
const filteredBadgeTariffs = tariffs.filter((tariff) => {
|
||||||
@ -79,7 +78,8 @@ console.log(sendRequestToCreate)
|
|||||||
user,
|
user,
|
||||||
discounts,
|
discounts,
|
||||||
openModalHC,
|
openModalHC,
|
||||||
sendRequestToCreate
|
sendRequestToCreate,
|
||||||
|
true
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
default:
|
default:
|
||||||
|
@ -4,6 +4,7 @@ import NumberIcon from "@icons/NumberIcon";
|
|||||||
import { currencyFormatter } from "./currencyFormatter";
|
import { currencyFormatter } from "./currencyFormatter";
|
||||||
import FreeTariffCard from "./FreeTariffCard";
|
import FreeTariffCard from "./FreeTariffCard";
|
||||||
import { Typography } from "@mui/material";
|
import { Typography } from "@mui/material";
|
||||||
|
import { startCC } from "@/stores/cc";
|
||||||
|
|
||||||
export const createTariffElements = (
|
export const createTariffElements = (
|
||||||
filteredTariffs: Tariff[],
|
filteredTariffs: Tariff[],
|
||||||
@ -11,7 +12,8 @@ export const createTariffElements = (
|
|||||||
user: any,
|
user: any,
|
||||||
discounts: any,
|
discounts: any,
|
||||||
onclick: any,
|
onclick: any,
|
||||||
sendRequestToCreate?: () => void
|
sendRequestToCreate?: () => void,
|
||||||
|
cc?: boolean
|
||||||
) => {
|
) => {
|
||||||
const tariffElements = filteredTariffs
|
const tariffElements = filteredTariffs
|
||||||
.filter((tariff) => tariff.privileges.length > 0)
|
.filter((tariff) => tariff.privileges.length > 0)
|
||||||
@ -45,11 +47,13 @@ export const createTariffElements = (
|
|||||||
}
|
}
|
||||||
buttonProps={{
|
buttonProps={{
|
||||||
text: "Купить",
|
text: "Купить",
|
||||||
onClick: () =>
|
onClick: () => {
|
||||||
|
if (cc) startCC() //пометка что это запрос на создание квиза
|
||||||
onclick({
|
onclick({
|
||||||
id: tariff._id,
|
id: tariff._id,
|
||||||
price: Math.trunc(priceAfterDiscounts) / 100,
|
price: Math.trunc(priceAfterDiscounts) / 100,
|
||||||
}),
|
})
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
sendRequestToCreate={sendRequestToCreate}
|
sendRequestToCreate={sendRequestToCreate}
|
||||||
headerText={tariff.name}
|
headerText={tariff.name}
|
||||||
|
25
src/stores/cc.ts
Normal file
25
src/stores/cc.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { create } from "zustand";
|
||||||
|
import { devtools } from "zustand/middleware";
|
||||||
|
|
||||||
|
interface CartStore {
|
||||||
|
cc: boolean
|
||||||
|
}
|
||||||
|
const initialState: CartStore = {
|
||||||
|
cc: false
|
||||||
|
}
|
||||||
|
|
||||||
|
//Была попытка оплатить корзину. Тут записанна недостающая сумма.
|
||||||
|
export const useCC = create<CartStore>()(
|
||||||
|
devtools(
|
||||||
|
(get, set) => initialState,
|
||||||
|
{
|
||||||
|
name: "cc",
|
||||||
|
enabled: process.env.NODE_ENV === "development",
|
||||||
|
trace: true,
|
||||||
|
actionsBlacklist: "rejected",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
export const cancelCC = () => useCC.setState({ cc: false });
|
||||||
|
export const startCC = () => useCC.setState({ cc: true });
|
@ -3,8 +3,9 @@ import { useUserStore } from "@/stores/user";
|
|||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { enqueueSnackbar } from "notistack";
|
import { enqueueSnackbar } from "notistack";
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import { useNavigate, useSearchParams } from "react-router-dom";
|
import { redirect, useNavigate, useSearchParams } from "react-router-dom";
|
||||||
import { calcTimeOfReadyPayCart, cancelPayCartProcess, startPayCartProcess, useNotEnoughMoneyAmount } from "@/stores/notEnoughMoneyAmount";
|
import { calcTimeOfReadyPayCart, cancelPayCartProcess, startPayCartProcess, useNotEnoughMoneyAmount } from "@/stores/notEnoughMoneyAmount";
|
||||||
|
import { startCC } from "@/stores/cc";
|
||||||
|
|
||||||
export const useAfterPay = () => {
|
export const useAfterPay = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@ -15,6 +16,7 @@ export const useAfterPay = () => {
|
|||||||
|
|
||||||
const purpose = searchParams.get("purpose");
|
const purpose = searchParams.get("purpose");
|
||||||
const paymentUserId = searchParams.get("userid");
|
const paymentUserId = searchParams.get("userid");
|
||||||
|
const currentCC = searchParams.get("cc");
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -23,17 +25,19 @@ export const useAfterPay = () => {
|
|||||||
|
|
||||||
if (purpose === "paycart") {
|
if (purpose === "paycart") {
|
||||||
setSearchParams({}, { replace: true });
|
setSearchParams({}, { replace: true });
|
||||||
|
if (currentCC) { startCC() }
|
||||||
(async () => {
|
(async () => {
|
||||||
|
|
||||||
//Проверяем можем ли мы оплатить корзину здесь и сейчас
|
//Проверяем можем ли мы оплатить корзину здесь и сейчас
|
||||||
const [, payCartError] = await cartApi.pay();
|
const [, payCartError] = await cartApi.pay();
|
||||||
console.log("попытка оплаты не удалась")
|
|
||||||
|
|
||||||
if (payCartError) {
|
if (payCartError) {
|
||||||
|
console.log("попытка оплаты не удалась")
|
||||||
//Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты
|
//Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты
|
||||||
startPayCartProcess(paymentUserId)
|
startPayCartProcess(paymentUserId)
|
||||||
} else {
|
} else {
|
||||||
enqueueSnackbar("Товары успешно приобретены")
|
enqueueSnackbar("Товары успешно приобретены")
|
||||||
|
if (currentCC) navigate("tariffs")
|
||||||
cancelPayCartProcess()
|
cancelPayCartProcess()
|
||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
|
Loading…
Reference in New Issue
Block a user