Merge branch 'dev' into 'staging'

fix: payment

See merge request frontend/marketplace!159
This commit is contained in:
Nastya 2024-04-03 21:57:20 +00:00
commit 9c75589464
2 changed files with 102 additions and 85 deletions

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

@ -1,101 +1,116 @@
import { useEffect, useState } from "react"
import axios, { AxiosResponse } from "axios"
import { ApologyPage } from "../ApologyPage"
import { useNavigate } from "react-router-dom"
import { clearAuthToken, getAuthToken, getMessageFromFetchError, setAuthToken, useUserAccountFetcher, useUserFetcher } from "@frontend/kitui";
import { clearUserData, setUser, setUserAccount, setUserId, useUserStore } from "@root/stores/user";
import { useEffect, useState } from "react";
import axios, { AxiosResponse } from "axios";
import { ApologyPage } from "../ApologyPage";
import { useNavigate } from "react-router-dom";
import {
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 { clearCustomTariffs } from "@root/stores/customTariffs";
import { clearTickets } from "@root/stores/tickets";
function refresh(token: string) {
return axios<never, AxiosResponse<{ accessToken: string; }>>(process.env.REACT_APP_DOMAIN + "/auth/refresh", {
headers: {
"Authorization": "Bearer " + token,
"Content-Type": "application/json",
},
method: "POST"
});
return axios<never, AxiosResponse<{ accessToken: string }>>(
process.env.REACT_APP_DOMAIN + "/auth/refresh",
{
headers: {
Authorization: "Bearer " + token,
"Content-Type": "application/json",
},
method: "POST",
}
);
}
const params = new URLSearchParams(window.location.search)
const action = params.get("action")
const dif = params.get("dif")
const token = params.get("data")
const userId = params.get("userid")
const params = new URLSearchParams(window.location.search);
const action = params.get("action");
const dif = params.get("dif");
const token = params.get("data");
const userId = params.get("userid");
let first = true
let first = true;
export default function QuizPayment() {
const navigate = useNavigate()
const [message, setMessage] = useState("Идёт загрузка")
const user = useUserStore((state) => state.user);
const navigate = useNavigate();
const [message, setMessage] = useState("Идёт загрузка");
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(
function redirectIfSignedIn() {
console.log(user)
if (user && !first && user._id === userId) navigate(`/payment?action=${action}&dif=${dif}`, { replace: true })
},
[navigate, user]
);
if (first) {
history.pushState(null, document.title, "/quizpayment");
try {
first = false;
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) {
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(token);
// },
// 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();
}
}
// setAuthToken(data.data.accessToken)
console.log("делаем юзера ", userId);
setUserId(userId);
return (
<ApologyPage message={message} />
)
};
// useUserFetcher({
// 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} />;
}