diff --git a/frontend/src/components/NeedLogin.tsx b/frontend/src/components/NeedLogin.tsx
index 20c26f4..b7b38b9 100644
--- a/frontend/src/components/NeedLogin.tsx
+++ b/frontend/src/components/NeedLogin.tsx
@@ -3,13 +3,14 @@ import { ApiErr } from "@/apis/error";
import { token } from "@/store/store";
import { useRequest } from "ahooks";
import { useAtomValue } from "jotai";
+import { useEffect } from "react";
import { useNavigate, Navigate } from "react-router-dom";
export default function NeedLogin({ children, needAdmin = false }: { children: JSX.Element, needAdmin?: boolean }) {
const t = useAtomValue(token)
const navigate = useNavigate();
- useRequest(() => userInfo(t), {
+ const u = useRequest(() => userInfo(t), {
refreshDeps: [t],
cacheKey: "/api/v1/user" + t,
staleTime: 60000,
@@ -18,18 +19,19 @@ export default function NeedLogin({ children, needAdmin = false }: { children: J
navigate("/login")
}
console.warn(e)
- },
- onSuccess: u => {
- if (!u) return
- if (!u.is_admin && needAdmin) {
- navigate("/login")
- }
- if (u.uuid == "") {
- navigate("/login")
- }
}
})
+ useEffect(() => {
+ if (!u.data) return
+ if (!u.data.is_admin && needAdmin) {
+ navigate("/login")
+ }
+ if (u.data.uuid == "") {
+ navigate("/login")
+ }
+ }, [navigate, needAdmin, u.data])
+
if (!localStorage.getItem("token") || localStorage.getItem("token") == '""') {
return
}
diff --git a/frontend/src/views/Register.tsx b/frontend/src/views/Register.tsx
index c5e1702..192f9dd 100644
--- a/frontend/src/views/Register.tsx
+++ b/frontend/src/views/Register.tsx
@@ -46,25 +46,26 @@ export default function SignUp() {
setDisableEmail(true)
}, [u.searchParams])
- useRequest(getConfig, {
+ const server = useRequest(getConfig, {
cacheKey: "/api/v1/config",
staleTime: 60000,
onError: e => {
console.warn(e)
setRegErr(String(e))
- },
- onSuccess: v => {
- if (!v.NeedEmail) return
-
- const code = u.searchParams.get("code")
- if (!code || code == "") {
- navigate("/register_email")
- return
- }
- setCode(code)
}
})
+ React.useEffect(() => {
+ if (!server.data || !server.data.NeedEmail) return
+
+ const code = u.searchParams.get("code")
+ if (!code || code == "") {
+ navigate("/register_email")
+ return
+ }
+ setCode(code)
+ }, [server.data, u.searchParams, navigate])
+
const checkList = React.useRef