refactor: 统一中文文案并简化组件结构,提升代码可读性
移除 chrome.i18n 后,将各功能页面、布局与工具模块的 UI 文案改为内联中文; 删除冗余注释与过度抽象(如 ToolCard、StatCard),精简 props 与状态管理; 同步优化 JsonTools、StorageCleaner、Timestamp、TestDataGenerator、Dashboard、 Base64Converter、RightClickRestorer、TextStatistics、TopBar、RouterProvider、 ThemeModeProvider 及生成器库与 utils 工具文件。
This commit is contained in:
@@ -108,9 +108,6 @@ export function RouterProvider({
|
||||
const hasUserNavigatedRef = useRef(false);
|
||||
const canPersistRef = useRef(false);
|
||||
|
||||
/**
|
||||
* 从异步存储中安全溯源初始数据
|
||||
*/
|
||||
const loadInitialData = useCallback(async () => {
|
||||
try {
|
||||
const savedRoute = await storageUtil.get(syncKey, defaultRoute);
|
||||
@@ -149,7 +146,6 @@ export function RouterProvider({
|
||||
.then(() => {
|
||||
if (cancelled) return;
|
||||
|
||||
// Check URL params for context menu data
|
||||
if (typeof window !== 'undefined') {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
const feature = params.get('feature') as PageType | null;
|
||||
@@ -169,7 +165,6 @@ export function RouterProvider({
|
||||
}
|
||||
}
|
||||
|
||||
// Check storage for pending context menu data
|
||||
storageUtil
|
||||
.get('contextMenu/pendingData')
|
||||
.then((pendingData) => {
|
||||
@@ -192,7 +187,7 @@ export function RouterProvider({
|
||||
|
||||
useEffect(() => {
|
||||
if (isLoaded && canPersistRef.current && syncRoute) {
|
||||
void storageUtil.set(syncKey, currentPage as PageType).catch(console.error);
|
||||
void storageUtil.set(syncKey, currentPage).catch(console.error);
|
||||
try {
|
||||
localStorage.setItem(`snapshot/${syncKey}`, JSON.stringify(currentPage));
|
||||
} catch (err) {
|
||||
@@ -324,7 +319,7 @@ export function RouterProvider({
|
||||
export function useRouter() {
|
||||
const context = useContext(RouterContext);
|
||||
if (!context) {
|
||||
throw new Error('useRouter must be used within a valid RouterProvider context wrapper');
|
||||
throw new Error('useRouter must be used within RouterProvider');
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ export function ThemeModeProvider({ children }: ThemeModeProviderProps) {
|
||||
applyResolvedThemeClass(resolveThemeMode(next));
|
||||
|
||||
void storageUtil.set(THEME_MODE_STORAGE_KEY, next).catch((err) => {
|
||||
console.error('[Theme Storage Error] Failed to persistent theme state:', err);
|
||||
console.error('[Theme Storage Error] Failed to persist theme mode:', err);
|
||||
});
|
||||
|
||||
persistThemeModeSnapshot(next);
|
||||
@@ -82,7 +82,7 @@ export function ThemeModeProvider({ children }: ThemeModeProviderProps) {
|
||||
applyResolvedThemeClass(resolveThemeMode(saved));
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('[Theme Restore Thread Failed]', err);
|
||||
console.error('[Theme Restore Error]', err);
|
||||
});
|
||||
|
||||
return () => {
|
||||
@@ -135,9 +135,7 @@ export function ThemeModeProvider({ children }: ThemeModeProviderProps) {
|
||||
export function useThemeMode(): ThemeModeContextType {
|
||||
const ctx = useContext(ThemeModeContext);
|
||||
if (!ctx) {
|
||||
throw new Error(
|
||||
'useThemeMode must be used within a valid ThemeModeProvider sandboxed container',
|
||||
);
|
||||
throw new Error('useThemeMode must be used within ThemeModeProvider');
|
||||
}
|
||||
return ctx;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user