From cfb398261137d84ca7beefb1a0f36e2239286be0 Mon Sep 17 00:00:00 2001 From: zimplexing Date: Fri, 15 Aug 2025 16:56:06 +0800 Subject: [PATCH] fix(api): update getResources method to fetch from admin config and add safety checks for SourceConfig --- package.json | 2 +- services/api.ts | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 82d67a5..4d3ec30 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "OrionTV", "private": true, "main": "expo-router/entry", - "version": "1.3.3", + "version": "1.3.4", "scripts": { "start": "EXPO_TV=1 EXPO_USE_METRO_WORKSPACE_ROOT=1 expo start", "android": "EXPO_TV=1 EXPO_USE_METRO_WORKSPACE_ROOT=1 expo run:android", diff --git a/services/api.ts b/services/api.ts index 04e6c1a..b54a6f5 100644 --- a/services/api.ts +++ b/services/api.ts @@ -208,9 +208,31 @@ export class API { } async getResources(signal?: AbortSignal): Promise { - const url = `/api/search/resources`; + const url = `/api/admin/config`; const response = await this._fetch(url, { signal }); - return response.json(); + const config = await response.json(); + + // 添加安全检查 + if (!config || !config.Config.SourceConfig) { + console.warn('API response missing SourceConfig:', config); + return []; + } + + // 确保 SourceConfig 是数组 + if (!Array.isArray(config.Config.SourceConfig)) { + console.warn('SourceConfig is not an array:', config.Config.SourceConfig); + return []; + } + + // 过滤并验证每个站点配置 + return config.Config.SourceConfig + .filter((site: any) => site && !site.disabled) + .map((site: any) => ({ + key: site.key || '', + api: site.api || '', + name: site.name || '', + detail: site.detail + })); } async getVideoDetail(source: string, id: string): Promise {