fix: payment

This commit is contained in:
IlyaDoronin 2024-04-01 17:48:22 +03:00
parent 1170b0bdc6
commit 822a6a2535
2 changed files with 102 additions and 85 deletions

@ -44,6 +44,8 @@ const { domain, pathname } = (() => {
export default () => { export default () => {
const theme = useTheme(); const theme = useTheme();
const phone = useMediaQuery(theme.breakpoints.down(375)); const phone = useMediaQuery(theme.breakpoints.down(375));
const redirectUrl = new URL(`https://${domain}.pena.digital${pathname}`);
redirectUrl.searchParams.append("afterpay", "true");
return ( return (
<Box <Box
@ -89,7 +91,7 @@ export default () => {
>Ваш платеж принят и в течение 10 минут товары будут зачислены</Typography> >Ваш платеж принят и в течение 10 минут товары будут зачислены</Typography>
<Button <Button
component={Link} component={Link}
to={`https://${domain}.pena.digital${pathname}`} to={redirectUrl.toString()}
replace={true} replace={true}
variant="pena-contained-dark" variant="pena-contained-dark"
>На главную</Button> >На главную</Button>

@ -1,101 +1,116 @@
import { useEffect, useState } from "react" import { useEffect, useState } from "react";
import axios, { AxiosResponse } from "axios" import axios, { AxiosResponse } from "axios";
import { ApologyPage } from "../ApologyPage" import { ApologyPage } from "../ApologyPage";
import { useNavigate } from "react-router-dom" import { useNavigate } from "react-router-dom";
import { clearAuthToken, getAuthToken, getMessageFromFetchError, setAuthToken, useUserAccountFetcher, useUserFetcher } from "@frontend/kitui"; import {
import { clearUserData, setUser, setUserAccount, setUserId, useUserStore } from "@root/stores/user"; clearAuthToken,
getMessageFromFetchError,
setAuthToken,
useUserAccountFetcher,
useUserFetcher,
getAuthToken,
} from "@frontend/kitui";
import {
clearUserData,
setUser,
setUserAccount,
setUserId,
useUserStore,
} from "@root/stores/user";
import { logout } from "@root/api/auth"; import { logout } from "@root/api/auth";
import { clearCustomTariffs } from "@root/stores/customTariffs"; import { clearCustomTariffs } from "@root/stores/customTariffs";
import { clearTickets } from "@root/stores/tickets"; import { clearTickets } from "@root/stores/tickets";
function refresh(token: string) { function refresh(token: string) {
return axios<never, AxiosResponse<{ accessToken: string; }>>(process.env.REACT_APP_DOMAIN + "/auth/refresh", { return axios<never, AxiosResponse<{ accessToken: string }>>(
headers: { process.env.REACT_APP_DOMAIN + "/auth/refresh",
"Authorization": "Bearer " + token, {
"Content-Type": "application/json", headers: {
}, Authorization: "Bearer " + token,
method: "POST" "Content-Type": "application/json",
}); },
method: "POST",
}
);
} }
const params = new URLSearchParams(window.location.search) const params = new URLSearchParams(window.location.search);
const action = params.get("action") const action = params.get("action");
const dif = params.get("dif") const dif = params.get("dif");
const token = params.get("data") const token = params.get("data");
const userId = params.get("userid") const userId = params.get("userid");
let first = true;
let first = true
export default function QuizPayment() { export default function QuizPayment() {
const navigate = useNavigate() const navigate = useNavigate();
const [message, setMessage] = useState("Идёт загрузка") const [message, setMessage] = useState("Идёт загрузка");
const user = useUserStore((state) => state.user); const user = useUserStore((state) => state.user);
useEffect(
function redirectIfSignedIn() {
if (!first && user?._id === userId)
navigate(`/payment?action=${action}&dif=${dif}`, { replace: true });
},
[navigate, user]
);
console.log("Я начал работать");
useEffect( if (first) {
function redirectIfSignedIn() { history.pushState(null, document.title, "/quizpayment");
console.log(user) try {
if (user && !first && user._id === userId) navigate(`/payment?action=${action}&dif=${dif}`, { replace: true }) first = false;
},
[navigate, user] if (user?._id === userId) {
); return;
}
console.log("Я начал работать") if (action && dif && token) {
(async () => {
// const data = await refresh(token)
// console.log(token)
if (getAuthToken()) {
await logout();
clearAuthToken();
clearUserData();
clearCustomTariffs();
clearTickets();
}
if (first) { setAuthToken(token);
history.pushState(null, document.title, "/quizpayment");
try {
first = false
if (action && dif && token) {
(async () => {
// const data = await refresh(token)
// console.log(token)
console.log(getAuthToken())
if (getAuthToken()) {
await logout()
clearAuthToken();
clearUserData();
clearCustomTariffs();
clearTickets();
}
setAuthToken(token)
// setAuthToken(data.data.accessToken)
console.log("делаем юзера ", userId)
setUserId(userId);
// useUserFetcher({
// url: process.env.REACT_APP_DOMAIN + `/user/${userId}`,
// userId,
// onNewUser: (user) => {
// setUser(user)
// navigate(`/payment?action=${action}&dif=${dif}`, { replace: true })
// }, // setAuthToken(data.data.accessToken)
// onError: () => { }, console.log("делаем юзера ", userId);
// }) setUserId(userId);
return
})()
} else {
var link = document.createElement("a");
link.href = "https://quiz.pena.digital/tariffs";
document.body.appendChild(link);
link.click();
}
} catch (e) {
console.log(e)
setMessage("Произошла ошибка")
var link = document.createElement("a");
link.href = "https://quiz.pena.digital/tariffs";
document.body.appendChild(link);
link.click();
}
}
return ( // useUserFetcher({
<ApologyPage message={message} /> // url: process.env.REACT_APP_DOMAIN + `/user/${userId}`,
) // userId,
}; // onNewUser: (user) => {
// setUser(user)
// navigate(`/payment?action=${action}&dif=${dif}`, { replace: true })
// },
// onError: () => { },
// })
return;
})();
} else {
var link = document.createElement("a");
link.href = "https://quiz.pena.digital/tariffs";
document.body.appendChild(link);
link.click();
}
} catch (e) {
console.log(e);
setMessage("Произошла ошибка");
var link = document.createElement("a");
link.href = "https://quiz.pena.digital/tariffs";
document.body.appendChild(link);
link.click();
}
}
return <ApologyPage message={message} />;
}