diff --git a/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts b/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts index b781da13b..388618af7 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts @@ -84,6 +84,15 @@ export type TaonierOnlineImage = { previewUrl: string; }; +/** 上一版本截图列表 → trim 后的非空 objectKey;「沿用」与「发布后回写」共用同一归一化口径。 */ +function onlineScreenshotObjectKeys( + images: readonly TaonierOnlineImage[], +): string[] { + return images + .map((image) => image.objectKey.trim()) + .filter((key) => key.length > 0); +} + /** * 线上值:live `GameDistributionGame` 行的只读投影。 * @@ -733,9 +742,7 @@ export function useTaonierExport({ * 显示上一版本的预览。 */ const adoptOnlineScreenshots = useCallback((): void => { - const keys = (online?.screenshots ?? []) - .map((image) => image.objectKey.trim()) - .filter((key) => key.length > 0); + const keys = onlineScreenshotObjectKeys(online?.screenshots ?? []); updateImageFields((previous) => ({ coverPath: previous.coverPath, screenshotPaths: keys, @@ -751,9 +758,7 @@ export function useTaonierExport({ */ const rewriteScreenshotsToOnline = useCallback( (values: TaonierOnlineValues): void => { - const keys = values.screenshots - .map((image) => image.objectKey.trim()) - .filter((key) => key.length > 0); + const keys = onlineScreenshotObjectKeys(values.screenshots); if (keys.length === 0) return; updateImageFields((previous) => ({ coverPath: previous.coverPath,