refactor(代码重复): 抽取共享工具函数与 UI 组件,消除多处重复实现

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
雨霖铃
2026-06-19 20:55:39 +08:00
parent 47d74f999e
commit 0f3060dcf3
24 changed files with 386 additions and 309 deletions
+1 -22
View File
@@ -16,6 +16,7 @@ import {
getDefaultVisibleFeatureKeys,
} from '@/config/features';
import { CONTEXT_MENU_DATA_EXPIRY_MS, saveContextMenuData } from '@/utils/useContextMenuData';
import { getSyncSnapshot } from '@/utils/syncSnapshot';
const MAX_RECENTLY_USED = 3;
@@ -69,28 +70,6 @@ interface RouterProviderProps {
pageOrderKey?: keyof StorageSchema;
}
/**
* 同步从 localStorage 获取存储快照(首屏 0 闪烁核心防线)
*/
const getSyncSnapshot = <T,>(
key: string,
defaultValue: T,
validator?: (val: unknown) => val is T,
): T => {
try {
const val = localStorage.getItem(`snapshot/${key}`);
if (!val) return defaultValue;
const parsed = JSON.parse(val) as unknown;
if (validator) {
return validator(parsed) ? parsed : defaultValue;
}
return (parsed as T) ?? defaultValue;
} catch (error) {
console.error('[Router Snapshot Error] Failed to read sync cache:', error);
return defaultValue;
}
};
export function RouterProvider({
children,
defaultRoute = 'dashboard',