Files
testing-tool/src/pages/Dashboard/dashboardFeatures.ts
T
雨霖铃 9097c48b1f feat(Dashboard): 重构仪表板功能组件和逻辑
- 新增 dashboardFeatures.ts 和 useDashboard.ts 文件,封装仪表板功能的解析和状态管理逻辑。
- 更新 Dashboard 组件,使用 useDashboard 钩子简化可见工具和最近使用工具的处理。
- 添加仪表板功能的单元测试,确保功能正确性。
- 更新 README.md,移除不再使用的 ToolCard 组件说明。
2026-06-19 09:26:30 +08:00

39 lines
1006 B
TypeScript

import { getFeatureByKey, type FeatureConfig } from '@/config/features';
import type { PageType } from '@/types/storage';
export type DashboardFeature = FeatureConfig & {
icon: NonNullable<FeatureConfig['icon']>;
};
export interface DashboardFeatureItem {
key: PageType;
feature: DashboardFeature;
}
function isDashboardFeature(feature: FeatureConfig): feature is DashboardFeature {
return feature.icon != null;
}
/**
* 将页面 key 列表解析为 Dashboard 可展示的工具项。
* 过滤条件:在 visiblePages 中且 feature 配置了 icon。
*/
export function resolveDashboardFeatures(
keys: PageType[],
visiblePages: PageType[],
): DashboardFeatureItem[] {
const visibleSet = new Set(visiblePages);
const items: DashboardFeatureItem[] = [];
for (const key of keys) {
if (!visibleSet.has(key)) continue;
const feature = getFeatureByKey(key);
if (!feature || !isDashboardFeature(feature)) continue;
items.push({ key, feature });
}
return items;
}