refactor: 收口公开详情编辑意图
This commit is contained in:
@@ -532,6 +532,7 @@ import {
|
||||
resolvePlatformPublicWorkActionMode,
|
||||
resolvePlatformPublicWorkDetailOpenDecision,
|
||||
resolvePlatformPublicWorkDetailOpenStrategy,
|
||||
resolvePlatformPublicWorkEditIntent,
|
||||
resolvePlatformPublicWorkLikeIntent,
|
||||
resolvePlatformPublicWorkRemixIntent,
|
||||
resolvePlatformPublicWorkStartIntent,
|
||||
@@ -13513,117 +13514,65 @@ export function PlatformEntryFlowShellImpl({
|
||||
runProtectedAction(async () => {
|
||||
setPublicWorkDetailError(null);
|
||||
|
||||
// 中文注释:自有公开作品必须恢复原草稿,不能复用 remix 复制链路。
|
||||
if (isBigFishGalleryEntry(entry)) {
|
||||
const work = mapPublicWorkDetailToBigFishWork(entry);
|
||||
if (!work?.sourceSessionId?.trim()) {
|
||||
setPublicWorkDetailError(
|
||||
'这份大鱼吃小鱼作品缺少原草稿会话,暂时无法编辑。',
|
||||
const intent = resolvePlatformPublicWorkEditIntent(entry, {
|
||||
selectedPuzzleDetail,
|
||||
selectedRpgDetailEntry: selectedDetailEntry,
|
||||
visualNovelWorks,
|
||||
barkBattleGalleryEntries,
|
||||
barkBattleWorks,
|
||||
mapMatch3DWork: mapPublicWorkDetailToMatch3DWork,
|
||||
});
|
||||
|
||||
switch (intent.type) {
|
||||
case 'blocked':
|
||||
setPublicWorkDetailError(intent.errorMessage);
|
||||
return;
|
||||
case 'edit-big-fish':
|
||||
void openBigFishDraft(intent.work);
|
||||
return;
|
||||
case 'edit-puzzle':
|
||||
void openPuzzleDraft(intent.work);
|
||||
return;
|
||||
case 'edit-match3d':
|
||||
void openMatch3DDraft(intent.work, {
|
||||
forceDraft: intent.forceDraft,
|
||||
});
|
||||
return;
|
||||
case 'edit-square-hole':
|
||||
void openSquareHoleDraft(intent.work, {
|
||||
forceDraft: intent.forceDraft,
|
||||
});
|
||||
return;
|
||||
case 'edit-visual-novel':
|
||||
void openVisualNovelDraft(intent.work, {
|
||||
forceDraft: intent.forceDraft,
|
||||
});
|
||||
return;
|
||||
case 'resolve-edutainment-draft': {
|
||||
const matchedDraft = await resolveBabyObjectMatchRuntimeDraft(
|
||||
intent.entry,
|
||||
);
|
||||
if (!matchedDraft) {
|
||||
setPublicWorkDetailError('这份宝贝识物缺少可编辑草稿。');
|
||||
return;
|
||||
}
|
||||
|
||||
openBabyObjectMatchDraft(matchedDraft);
|
||||
return;
|
||||
}
|
||||
void openBigFishDraft(work);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isPuzzleGalleryEntry(entry)) {
|
||||
const work =
|
||||
selectedPuzzleDetail?.profileId === entry.profileId
|
||||
? selectedPuzzleDetail
|
||||
: mapPublicWorkDetailToPuzzleWork(entry);
|
||||
if (!work?.sourceSessionId?.trim()) {
|
||||
setPublicWorkDetailError(
|
||||
'这份拼图作品缺少原草稿会话,暂时无法编辑。',
|
||||
);
|
||||
case 'edit-bark-battle':
|
||||
openBarkBattleDraft(intent.work, {
|
||||
forceDraft: intent.forceDraft,
|
||||
});
|
||||
return;
|
||||
}
|
||||
void openPuzzleDraft(work);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isMatch3DGalleryEntry(entry)) {
|
||||
const work = mapPublicWorkDetailToMatch3DWork(entry);
|
||||
if (!work?.sourceSessionId?.trim()) {
|
||||
setPublicWorkDetailError(
|
||||
'这份抓大鹅作品缺少原草稿会话,暂时无法编辑。',
|
||||
);
|
||||
case 'edit-rpg-gallery':
|
||||
void detailNavigation.openSavedCustomWorldEditor(intent.entry);
|
||||
return;
|
||||
default: {
|
||||
const exhaustive: never = intent;
|
||||
return exhaustive;
|
||||
}
|
||||
void openMatch3DDraft(work, { forceDraft: true });
|
||||
return;
|
||||
}
|
||||
|
||||
if (isSquareHoleGalleryEntry(entry)) {
|
||||
const work = mapPublicWorkDetailToSquareHoleWork(entry);
|
||||
if (!work?.sourceSessionId?.trim()) {
|
||||
setPublicWorkDetailError(
|
||||
'这份方洞挑战作品缺少原草稿会话,暂时无法编辑。',
|
||||
);
|
||||
return;
|
||||
}
|
||||
void openSquareHoleDraft(work, { forceDraft: true });
|
||||
return;
|
||||
}
|
||||
|
||||
if (isJumpHopGalleryEntry(entry)) {
|
||||
setPublicWorkDetailError('这份跳一跳作品暂时请从作品架编辑。');
|
||||
return;
|
||||
}
|
||||
|
||||
if (isWoodenFishGalleryEntry(entry)) {
|
||||
setPublicWorkDetailError('这份敲木鱼作品暂时请从作品架编辑。');
|
||||
return;
|
||||
}
|
||||
|
||||
if (isVisualNovelGalleryEntry(entry)) {
|
||||
const matchedWork = visualNovelWorks.find(
|
||||
(work) => work.profileId === entry.profileId,
|
||||
);
|
||||
if (!matchedWork) {
|
||||
setPublicWorkDetailError('这份视觉小说缺少可编辑草稿。');
|
||||
return;
|
||||
}
|
||||
void openVisualNovelDraft(matchedWork, { forceDraft: true });
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEdutainmentGalleryEntry(entry)) {
|
||||
const matchedDraft = await resolveBabyObjectMatchRuntimeDraft(entry);
|
||||
if (!matchedDraft) {
|
||||
setPublicWorkDetailError('这份宝贝识物缺少可编辑草稿。');
|
||||
return;
|
||||
}
|
||||
|
||||
openBabyObjectMatchDraft(matchedDraft);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isBarkBattleGalleryEntry(entry)) {
|
||||
const matchedWork =
|
||||
barkBattleWorks.find((work) => work.workId === entry.workId) ??
|
||||
barkBattleGalleryEntries.find(
|
||||
(work) => work.workId === entry.workId,
|
||||
) ??
|
||||
mapBarkBattlePublicDetailToWorkSummary(entry);
|
||||
if (!matchedWork?.draftId?.trim()) {
|
||||
setPublicWorkDetailError('这份汪汪声浪缺少可编辑草稿。');
|
||||
return;
|
||||
}
|
||||
|
||||
openBarkBattleDraft(matchedWork, { forceDraft: true });
|
||||
return;
|
||||
}
|
||||
|
||||
const editEntry =
|
||||
selectedDetailEntry?.profileId === entry.profileId
|
||||
? selectedDetailEntry
|
||||
: null;
|
||||
if (!editEntry) {
|
||||
setPublicWorkDetailError('作品详情尚未读取完成。');
|
||||
return;
|
||||
}
|
||||
|
||||
void detailNavigation.openSavedCustomWorldEditor(editEntry);
|
||||
});
|
||||
},
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user