48c7cce1ba
合入 master 最新的认证、玩法契约与推荐页改动。 修复拼图草稿生成、推荐页下一关和公开详情访客试玩回归。 修复抓大鹅草稿试玩鉴权与首屏推荐详情测试入口。 补齐相关测试夹具、文档与团队记忆更新。
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import type { PuzzleAgentSessionSnapshot } from '../../../packages/shared/src/contracts/puzzleAgentSession';
|
|
|
|
function hasText(value: string | null | undefined) {
|
|
return typeof value === 'string' && value.trim().length > 0;
|
|
}
|
|
|
|
function hasAssetReference(
|
|
imageSrc: string | null | undefined,
|
|
objectKey: string | null | undefined,
|
|
) {
|
|
return hasText(imageSrc) || hasText(objectKey);
|
|
}
|
|
|
|
export function isPuzzleCompileActionReady(
|
|
session: PuzzleAgentSessionSnapshot,
|
|
) {
|
|
const draft = session.draft;
|
|
if (!draft) {
|
|
return false;
|
|
}
|
|
return (
|
|
draft.levels?.some(
|
|
(level) =>
|
|
(hasText(draft.coverImageSrc) || hasText(level.coverImageSrc)) &&
|
|
hasAssetReference(level.levelSceneImageSrc, level.levelSceneImageObjectKey) &&
|
|
hasAssetReference(
|
|
level.uiSpritesheetImageSrc,
|
|
level.uiSpritesheetImageObjectKey,
|
|
) &&
|
|
hasAssetReference(
|
|
level.levelBackgroundImageSrc,
|
|
level.levelBackgroundImageObjectKey,
|
|
),
|
|
) === true
|
|
);
|
|
}
|