From ca1783aad4b1b09af3d5c87cecdd8bd41af906a9 Mon Sep 17 00:00:00 2001 From: Tristan Yang Date: Tue, 1 Aug 2023 18:15:07 +0800 Subject: [PATCH] feat: add redirect path in oauth page --- src/routes/oauth/index.tsx | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/routes/oauth/index.tsx b/src/routes/oauth/index.tsx index ffe9df6c..49d68db9 100644 --- a/src/routes/oauth/index.tsx +++ b/src/routes/oauth/index.tsx @@ -2,16 +2,17 @@ import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; import { useDispatch } from "react-redux"; -import { useNavigate, useParams } from "react-router-dom"; +import { useNavigate, useParams, useSearchParams } from "react-router-dom"; import { useLoginMutation } from "@/app/services/auth"; import { setAuthData } from "@/app/slices/auth.data"; +import clsx from "clsx"; export default function OAuthPage() { const { t: ct } = useTranslation(); - const [login, { data, isSuccess, isError }] = useLoginMutation(); + const [login, { data, isSuccess, isError, isLoading }] = useLoginMutation(); const { token } = useParams(); - const [loading, setLoading] = useState(true); + const [searchParams] = useSearchParams(); const [error, setError] = useState(null); const dispatch = useDispatch(); const navigateTo = useNavigate(); @@ -23,30 +24,30 @@ export default function OAuthPage() { } login({ key: token, type: "thirdparty" }); }; - setTimeout(() => { - startOauth(); - }, 1500); + startOauth(); }, [token]); useEffect(() => { if (isError) { - setError("Something Error"); + setError("Try Logging in Error"); } }, [isError]); useEffect(() => { if (isSuccess && data) { - setLoading(false); // 更新本地认证信息 toast.success(ct("tip.login")); dispatch(setAuthData(data)); - navigateTo("/"); + const navPath = searchParams.get("path") || "/"; + navigateTo(navPath); } }, [isSuccess, data]); return ( -
- {loading ? "loading" : ""} - {error} +
+ + {isLoading ? "loading" : ""} + {error} +
); }