refactor: 收口公开详情改造意图

This commit is contained in:
2026-06-04 00:32:10 +08:00
parent 872d741fdc
commit 37a35daddb
6 changed files with 166 additions and 47 deletions

View File

@@ -533,6 +533,7 @@ import {
resolvePlatformPublicWorkDetailOpenDecision,
resolvePlatformPublicWorkDetailOpenStrategy,
resolvePlatformPublicWorkLikeIntent,
resolvePlatformPublicWorkRemixIntent,
resolveVisiblePuzzleDetailCoverCount,
} from './platformPublicWorkDetailFlow';
import {
@@ -13460,12 +13461,14 @@ export function PlatformEntryFlowShellImpl({
setIsPublicWorkDetailBusy(true);
setPublicWorkDetailError(null);
if (isBigFishGalleryEntry(entry)) {
void remixBigFishGalleryWork(entry.profileId)
const intent = resolvePlatformPublicWorkRemixIntent(entry);
if (intent.type === 'remix-big-fish') {
void remixBigFishGalleryWork(intent.profileId)
.then((response) => {
bigFishFlow.setSession(response.session);
enterCreateTab();
setSelectionStage('big-fish-result');
setSelectionStage(intent.selectionStage);
})
.catch((error) => {
setPublicWorkDetailError(
@@ -13478,14 +13481,14 @@ export function PlatformEntryFlowShellImpl({
return;
}
if (isPuzzleGalleryEntry(entry)) {
void remixPuzzleGalleryWork(entry.profileId)
if (intent.type === 'remix-puzzle') {
void remixPuzzleGalleryWork(intent.profileId)
.then((response) => {
resetRecommendRuntimeSelection();
puzzleFlow.setSession(response.session);
setPuzzleOperation(null);
enterCreateTab();
setSelectionStage('puzzle-result');
setSelectionStage(intent.selectionStage);
})
.catch((error) => {
setPublicWorkDetailError(
@@ -13498,49 +13501,13 @@ export function PlatformEntryFlowShellImpl({
return;
}
if (isMatch3DGalleryEntry(entry)) {
setPublicWorkDetailError('抓大鹅作品改造将在后续版本开放。');
if (intent.type === 'unsupported') {
setPublicWorkDetailError(intent.errorMessage);
setIsPublicWorkDetailBusy(false);
return;
}
if (isSquareHoleGalleryEntry(entry)) {
setPublicWorkDetailError('方洞挑战作品改造将在后续版本开放。');
setIsPublicWorkDetailBusy(false);
return;
}
if (isJumpHopGalleryEntry(entry)) {
setPublicWorkDetailError('跳一跳作品改造将在后续版本开放。');
setIsPublicWorkDetailBusy(false);
return;
}
if (isWoodenFishGalleryEntry(entry)) {
setPublicWorkDetailError('敲木鱼作品改造将在后续版本开放。');
setIsPublicWorkDetailBusy(false);
return;
}
if (isVisualNovelGalleryEntry(entry)) {
setPublicWorkDetailError('视觉小说作品改造将在后续版本开放。');
setIsPublicWorkDetailBusy(false);
return;
}
if (isEdutainmentGalleryEntry(entry)) {
setPublicWorkDetailError('宝贝识物作品改造将在创作链路接入后开放。');
setIsPublicWorkDetailBusy(false);
return;
}
if (isBarkBattleGalleryEntry(entry)) {
setPublicWorkDetailError('汪汪声浪作品改造将在后续版本开放。');
setIsPublicWorkDetailBusy(false);
return;
}
void remixRpgEntryWorldGallery(entry.ownerUserId, entry.profileId)
void remixRpgEntryWorldGallery(intent.ownerUserId, intent.profileId)
.then((response) => {
const nextEntry = response.entry;
setSelectedDetailEntry(nextEntry);

View File

@@ -35,6 +35,7 @@ import {
resolvePlatformPublicWorkDetailOpenDecision,
resolvePlatformPublicWorkDetailOpenStrategy,
resolvePlatformPublicWorkLikeIntent,
resolvePlatformPublicWorkRemixIntent,
resolveVisiblePuzzleDetailCoverCount,
} from './platformPublicWorkDetailFlow';
@@ -695,6 +696,58 @@ test('platform public work detail flow resolves like intent', () => {
});
});
test('platform public work detail flow resolves remix intent', () => {
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('big-fish'))).toEqual(
{
type: 'remix-big-fish',
profileId: 'big-fish-profile',
selectionStage: 'big-fish-result',
},
);
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('puzzle'))).toEqual({
type: 'remix-puzzle',
profileId: 'puzzle-profile',
selectionStage: 'puzzle-result',
});
expect(resolvePlatformPublicWorkRemixIntent(buildRpgEntry())).toEqual({
type: 'remix-rpg-gallery',
ownerUserId: 'user-1',
profileId: 'rpg-profile',
});
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('match3d'))).toEqual(
{
type: 'unsupported',
errorMessage: '抓大鹅作品改造将在后续版本开放。',
},
);
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('square-hole'))).toEqual({
type: 'unsupported',
errorMessage: '方洞挑战作品改造将在后续版本开放。',
});
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('jump-hop'))).toEqual({
type: 'unsupported',
errorMessage: '跳一跳作品改造将在后续版本开放。',
});
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('wooden-fish'))).toEqual({
type: 'unsupported',
errorMessage: '敲木鱼作品改造将在后续版本开放。',
});
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('visual-novel'))).toEqual({
type: 'unsupported',
errorMessage: '视觉小说作品改造将在后续版本开放。',
});
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('edutainment'))).toEqual({
type: 'unsupported',
errorMessage: '宝贝识物作品改造将在创作链路接入后开放。',
});
expect(resolvePlatformPublicWorkRemixIntent(buildTypedEntry('bark-battle'))).toEqual(
{
type: 'unsupported',
errorMessage: '汪汪声浪作品改造将在后续版本开放。',
},
);
});
test('platform public work detail flow resolves direct open decision', () => {
const entry = buildTypedEntry('match3d', {
publicWorkCode: ' M3D-001 ',

View File

@@ -100,6 +100,27 @@ export type PlatformPublicWorkLikeIntent =
errorMessage: string;
};
export type PlatformPublicWorkRemixIntent =
| {
type: 'remix-big-fish';
profileId: string;
selectionStage: 'big-fish-result';
}
| {
type: 'remix-puzzle';
profileId: string;
selectionStage: 'puzzle-result';
}
| {
type: 'remix-rpg-gallery';
ownerUserId: string;
profileId: string;
}
| {
type: 'unsupported';
errorMessage: string;
};
export type PlatformPublicWorkDetailOpenDecision =
| {
type: 'blocked';
@@ -526,6 +547,81 @@ export function resolvePlatformPublicWorkLikeIntent(
};
}
export function resolvePlatformPublicWorkRemixIntent(
entry: PlatformPublicGalleryCard,
): PlatformPublicWorkRemixIntent {
if (isBigFishGalleryEntry(entry)) {
return {
type: 'remix-big-fish',
profileId: entry.profileId,
selectionStage: 'big-fish-result',
};
}
if (isPuzzleGalleryEntry(entry)) {
return {
type: 'remix-puzzle',
profileId: entry.profileId,
selectionStage: 'puzzle-result',
};
}
if (isMatch3DGalleryEntry(entry)) {
return {
type: 'unsupported',
errorMessage: '抓大鹅作品改造将在后续版本开放。',
};
}
if (isSquareHoleGalleryEntry(entry)) {
return {
type: 'unsupported',
errorMessage: '方洞挑战作品改造将在后续版本开放。',
};
}
if (isJumpHopGalleryEntry(entry)) {
return {
type: 'unsupported',
errorMessage: '跳一跳作品改造将在后续版本开放。',
};
}
if (isWoodenFishGalleryEntry(entry)) {
return {
type: 'unsupported',
errorMessage: '敲木鱼作品改造将在后续版本开放。',
};
}
if (isVisualNovelGalleryEntry(entry)) {
return {
type: 'unsupported',
errorMessage: '视觉小说作品改造将在后续版本开放。',
};
}
if (isEdutainmentGalleryEntry(entry)) {
return {
type: 'unsupported',
errorMessage: '宝贝识物作品改造将在创作链路接入后开放。',
};
}
if (isBarkBattleGalleryEntry(entry)) {
return {
type: 'unsupported',
errorMessage: '汪汪声浪作品改造将在后续版本开放。',
};
}
return {
type: 'remix-rpg-gallery',
ownerUserId: entry.ownerUserId,
profileId: entry.profileId,
};
}
export function resolvePlatformPublicWorkDetailOpenDecision(
entry: PlatformPublicGalleryCard,
deps: PlatformPublicWorkDetailOpenDecisionDeps = {},