fix: guest route

This commit is contained in:
Tristan Yang
2023-08-04 09:37:45 +08:00
parent 34dcb8d3af
commit dbb1338cbe
3 changed files with 17 additions and 7 deletions
+5 -2
View File
@@ -93,13 +93,16 @@ export const authApi = createApi({
method: "POST",
body: data
}),
// extraOptions:{
// maxRetries: 3
// },
async onQueryStarted(params, { dispatch, queryFulfilled }) {
try {
const { data } = await queryFulfilled;
dispatch(updateToken(data));
} catch {
} catch (error) {
// dispatch(resetAuthData());
console.error("renew token error");
console.error("renew token error from rtk", error);
}
}
}),
+7 -3
View File
@@ -26,6 +26,7 @@ const RequireAuth: FC<Props> = ({ children, redirectTo = "/login" }) => {
if (checkingInitialized || !loginConfigSuccess) return <Loading fullscreen={true} />;
// 未初始化 则先走setup 流程
if (!initialized) return <Navigate to={`/onboarding`} replace />;
// 开启guest 并且没token 而且是允许guest访问的路由 则先去过渡页登录
if (!token) {
// 记录下当前的路径,登录后跳转回来
const ignorePath = `/setting/my_account`;
@@ -33,10 +34,13 @@ const RequireAuth: FC<Props> = ({ children, redirectTo = "/login" }) => {
KEY_LOCAL_TRY_PATH,
ignorePath == location.pathname ? "/" : `${location.pathname}${location.search}`
);
return <Navigate to={redirectTo} replace />;
const guestLogin = loginConfig?.guest && allowGuest;
return guestLogin ? (
<Navigate to={"/guest_login"} replace />
) : (
<Navigate to={redirectTo} replace />
);
}
// 开启guest 并且没token 而且是允许guest访问的路由 则先去过渡页登录
if (loginConfig?.guest && !token && allowGuest) return <Navigate to={"/guest_login"} replace />;
// 登陆者是guest,并且不允许访问
if (token && guest && !allowGuest) return <Navigate to={"/"} replace />;
// console.log("authhhhh", allowGuest, token, guest);
+5 -2
View File
@@ -102,8 +102,11 @@ export default function useStreaming() {
if (dayjs().isAfter(new Date(expireTime - 20 * 1000))) {
const resp = await renewToken({ token, refresh_token: refreshToken });
if ("error" in resp) {
// 停止循环
stopStreaming();
// 还有网,而且在当前页,则停止循环
if (navigator.onLine || !document.hidden) {
stopStreaming();
}
// 返回,开始下次polling(如果有)
return;
} else {
_token = resp.data.token;