9097c48b1f
- 新增 dashboardFeatures.ts 和 useDashboard.ts 文件,封装仪表板功能的解析和状态管理逻辑。 - 更新 Dashboard 组件,使用 useDashboard 钩子简化可见工具和最近使用工具的处理。 - 添加仪表板功能的单元测试,确保功能正确性。 - 更新 README.md,移除不再使用的 ToolCard 组件说明。
32 lines
1023 B
TypeScript
32 lines
1023 B
TypeScript
import { useMemo } from 'react';
|
|
import { useRouter } from '@/providers/RouterProvider';
|
|
import type { PageType } from '@/types/storage';
|
|
import { resolveDashboardFeatures, type DashboardFeatureItem } from './dashboardFeatures';
|
|
|
|
export type { DashboardFeatureItem } from './dashboardFeatures';
|
|
|
|
export interface UseDashboardReturn {
|
|
visibleFeatures: DashboardFeatureItem[];
|
|
recentFeatures: DashboardFeatureItem[];
|
|
showRecent: boolean;
|
|
navigateTo: (page: PageType) => void;
|
|
}
|
|
|
|
export function useDashboard(): UseDashboardReturn {
|
|
const { navigateTo, visiblePages, pageOrder, recentlyUsedTools } = useRouter();
|
|
|
|
const visibleFeatures = useMemo(
|
|
() => resolveDashboardFeatures(pageOrder, visiblePages),
|
|
[pageOrder, visiblePages],
|
|
);
|
|
|
|
const recentFeatures = useMemo(
|
|
() => resolveDashboardFeatures(recentlyUsedTools, visiblePages),
|
|
[recentlyUsedTools, visiblePages],
|
|
);
|
|
|
|
const showRecent = recentFeatures.length > 0;
|
|
|
|
return { visibleFeatures, recentFeatures, showRecent, navigateTo };
|
|
}
|