feat(store): 实现混合仓库优先级配置功能

添加优先级配置文件支持,根据配置决定默认展示的仓库版本
新增优先级规则匹配逻辑,支持包名、分类和标签匹配
修改应用详情和合并应用的默认来源判断逻辑
This commit is contained in:
2026-04-05 09:52:06 +08:00
parent 70f6c8e812
commit d74e05a327
4 changed files with 252 additions and 8 deletions
+12 -3
View File
@@ -169,6 +169,8 @@ import {
currentAppSparkInstalled,
currentAppApmInstalled,
currentStoreMode,
getHybridDefaultOrigin,
loadPriorityConfig,
} from "./global/storeConfig";
import {
downloads,
@@ -473,12 +475,14 @@ const openDetail = async (app: App | Record<string, unknown>) => {
if (sparkApp || apmApp) {
// 如果两个仓库都有这个应用,创建合并对象
if (sparkApp && apmApp) {
// 根据优先级配置决定默认显示哪个版本
const defaultOrigin = getHybridDefaultOrigin(sparkApp);
finalApp = {
...sparkApp, // 默认使用 Spark 的信息作为主显示
...(defaultOrigin === "spark" ? sparkApp : apmApp), // 根据优先级选择主显示
isMerged: true,
sparkApp: sparkApp,
apmApp: apmApp,
viewingOrigin: "spark", // 默认查看 Spark 版本
viewingOrigin: defaultOrigin, // 默认查看优先级高的版本
};
} else if (sparkApp) {
finalApp = sparkApp;
@@ -559,8 +563,10 @@ const openDetail = async (app: App | Record<string, unknown>) => {
finalApp.viewingOrigin = "spark";
} else if (apmInstalled && !sparkInstalled) {
finalApp.viewingOrigin = "apm";
} else {
// 若都安装或都未安装,根据优先级配置决定默认展示
finalApp.viewingOrigin = getHybridDefaultOrigin(finalApp.sparkApp || finalApp);
}
// 若都安装或都未安装,默认展示 spark
}
const displayAppForScreenshots =
@@ -1113,6 +1119,9 @@ const loadCategories = async () => {
}
}
categories.value = categoryData;
// 加载优先级配置(从 spark 目录)
await loadPriorityConfig(arch);
} catch (error) {
logger.error(`读取 categories 失败: ${error}`);
}