fix: check token in reg

This commit is contained in:
Tristan Yang
2023-06-07 09:34:06 +08:00
parent 26a51bd369
commit 6fee0a35e8
2 changed files with 16 additions and 19 deletions
+1 -16
View File
@@ -4,23 +4,16 @@ import { useTranslation } from "react-i18next";
import { useDispatch } from "react-redux";
import { useParams } from "react-router-dom";
import {
useCheckMagicTokenValidMutation,
useLoginMutation,
useRegisterMutation
} from "@/app/services/auth";
import { useLoginMutation, useRegisterMutation } from "@/app/services/auth";
import { setAuthData } from "@/app/slices/auth.data";
import Button from "@/components/styled/Button";
import Input from "@/components/styled/Input";
import ExpiredTip from "./ExpiredTip";
import { useMagicToken } from "./index";
const RegWithUsername: FC = () => {
const { t: ct } = useTranslation();
const { t } = useTranslation("auth");
const { token } = useMagicToken();
const [checkTokenInvalid, { data: isTokenValid, isLoading: checkingToken }] =
useCheckMagicTokenValidMutation();
const [
login,
{ isLoading: loginLoading, error: loginError, isSuccess: loginSuccess, data: loginData }
@@ -33,12 +26,6 @@ const RegWithUsername: FC = () => {
const { from = "reg" } = useParams();
const dispatch = useDispatch();
const [username, setUsername] = useState("");
// todo: check if query param exists
useEffect(() => {
if (token) {
checkTokenInvalid(token);
}
}, [token]);
useEffect(() => {
if (loginError && "status" in loginError) {
@@ -97,8 +84,6 @@ const RegWithUsername: FC = () => {
};
if (!token) return <span className="dark:text-white">No Token</span>;
if (checkingToken) return <div className="dark:text-gray-100">Checking Magic Link...</div>;
if (!isTokenValid) return <ExpiredTip />;
const isLoading = loginLoading || regLoading;
const isSuccess = loginSuccess || regSuccess;
return (
+15 -3
View File
@@ -1,19 +1,31 @@
import { useEffect, useState } from "react";
import { Outlet, useOutletContext, useSearchParams } from "react-router-dom";
import { useCheckMagicTokenValidMutation } from "@/app/services/auth";
import ExpiredTip from "./ExpiredTip";
type ContextType = { token: string };
export default function RegContainer() {
const [checkToken, { data: tokenIsValid, isLoading: checkingToken }] =
useCheckMagicTokenValidMutation();
const [token, setToken] = useState("");
let [searchParams] = useSearchParams(new URLSearchParams(location.search));
const magic_token = searchParams.get("magic_token") ?? "";
useEffect(() => {
setToken(magic_token);
if (magic_token) {
checkToken(magic_token);
}
}, [magic_token]);
useEffect(() => {
if (tokenIsValid) {
setToken(magic_token);
}
}, [tokenIsValid, magic_token]);
if (checkingToken) return <div className="dark:text-gray-100">Checking Magic Link...</div>;
return (
<div className="flex-center h-screen overflow-x-hidden overflow-y-auto dark:bg-gray-700">
<div className="py-8 px-10 shadow-md rounded-xl max-h-[95vh] overflow-y-auto overflow-x-hidden">
<Outlet context={{ token }} />
{tokenIsValid ? <Outlet context={{ token }} /> : <ExpiredTip />}
</div>
</div>
);