diff --git a/src/features/games/hooks/useGamesPage.js b/src/features/games/hooks/useGamesPage.js index 4eb4277..689cdef 100644 --- a/src/features/games/hooks/useGamesPage.js +++ b/src/features/games/hooks/useGamesPage.js @@ -53,6 +53,15 @@ const defaultBridgeScriptForm = { bridgeScriptVersion: "", }; +const writableBridgeAdapterTypes = new Set([ + "yomi_v4", + "leadercc_v1", + "zeeone_v1", + "baishun_v1", + "vivagames_v1", + "reyou_v1", +]); + const emptyCatalog = { items: [], pageSize: 50 }; const emptyPlatforms = { items: [] }; const defaultPageSize = 50; @@ -287,10 +296,16 @@ export function useGamesPage() { showToast("请填写 bridge_script_url 和 bridge_script_version", "error"); return; } + const writablePlatforms = platforms.filter(isWritableBridgePlatform); + const skippedPlatforms = platforms.filter((platform) => !isWritableBridgePlatform(platform)); + if (writablePlatforms.length === 0) { + showToast("没有可写入的有效游戏平台", "error"); + return; + } setLoadingAction("bridge-script"); try { await Promise.all( - platforms.map((platform) => { + writablePlatforms.map((platform) => { const config = parseJsonObject(platform.adapterConfigJson); config.bridge_script_url = bridgeScriptUrl; config.bridge_script_version = bridgeScriptVersion; @@ -309,7 +324,14 @@ export function useGamesPage() { ); await reloadPlatforms(); await reloadCatalog(); - showToast(`JS 桥接配置已同步 ${platforms.length} 个平台`, "success"); + const skippedMessage = + skippedPlatforms.length > 0 + ? `,跳过 ${skippedPlatforms.length} 个无效适配器平台:${skippedPlatforms + .map((platform) => platform.platformCode || platform.platformName || platform.adapterType) + .slice(0, 3) + .join(", ")}` + : ""; + showToast(`JS 桥接配置已同步 ${writablePlatforms.length} 个平台${skippedMessage}`, "success"); closeAction(); } catch (err) { showToast(err.message || "保存 JS 桥接配置失败", "error"); @@ -532,6 +554,14 @@ function readConfigString(value) { return String(value).trim(); } +function isWritableBridgePlatform(platform) { + return writableBridgeAdapterTypes.has( + String(platform?.adapterType || "") + .trim() + .toLowerCase(), + ); +} + function platformUpsertPayload(platform, adapterConfigJson) { return { platformCode: platform.platformCode,