fix:修复所有的包导入错误问题
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* 客户端鉴权门 hook
|
||||
*
|
||||
* 单一真值 = `authStorage`(与 `src/data/api/interceptor/token_interceptor.ts` 同源)。
|
||||
* 单一真值 = `window.localStorage[StorageKeys.loginToken]`。
|
||||
* 故意不引入 Context/Zustand:本轮只有 splash/auth 两处使用,直接 hook 调用更直白。
|
||||
*
|
||||
* 实现要点(React 19 / Next.js 16 约定):
|
||||
@@ -22,11 +22,14 @@
|
||||
*
|
||||
* 注:本轮不暴露 `ready` 标志——`useSyncExternalStore` 自身的 SSR / 客户端差异
|
||||
* 处理已经能保证水合首帧拿到 `false`(与 SSR 一致),无需调用方再判 ready。
|
||||
*
|
||||
* 注意:直接读 `window.localStorage` 是因为 `useSyncExternalStore.getSnapshot`
|
||||
* 必须是同步函数。`AuthStorage.hasLoginToken()` 是 async,无法在此处使用。
|
||||
*/
|
||||
|
||||
import { useSyncExternalStore } from "react";
|
||||
|
||||
import { authStorage } from "@/data/storage/auth_storage";
|
||||
import { StorageKeys } from "@/data/storage/storage_keys";
|
||||
|
||||
export interface AuthGateState {
|
||||
/** 已登录(持有非空 `cozsweet.loginToken`) */
|
||||
@@ -36,7 +39,14 @@ export interface AuthGateState {
|
||||
// 静态 subscribe:localStorage 在本应用生命周期内不会主动变化。
|
||||
const subscribe = (): (() => void) => () => {};
|
||||
|
||||
const getSnapshot = (): boolean => authStorage.hasLoginToken();
|
||||
/**
|
||||
* 同步读取 localStorage 中的 login_token(与 `AuthStorage.hasLoginToken` 语义一致)
|
||||
*/
|
||||
const getSnapshot = (): boolean => {
|
||||
if (typeof window === "undefined") return false;
|
||||
const token = window.localStorage.getItem(StorageKeys.loginToken);
|
||||
return token !== null && token.length > 0;
|
||||
};
|
||||
|
||||
const getServerSnapshot = (): boolean => false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user