refactor: 收口公开作品详情策略
This commit is contained in:
@@ -515,6 +515,10 @@ import {
|
||||
mergePlatformPublicGalleryEntries,
|
||||
type RecommendRuntimeKind,
|
||||
} from './platformPublicGalleryFlow';
|
||||
import {
|
||||
resolvePlatformPublicWorkActionMode,
|
||||
resolvePlatformPublicWorkDetailOpenStrategy,
|
||||
} from './platformPublicWorkDetailFlow';
|
||||
import {
|
||||
buildPuzzleResultProfileId,
|
||||
buildPuzzleResultWorkId,
|
||||
@@ -4025,13 +4029,13 @@ export function PlatformEntryFlowShellImpl({
|
||||
const resultViewError =
|
||||
autosaveCoordinator.customWorldAutoSaveError ??
|
||||
sessionController.customWorldError;
|
||||
const isSelectedPublicWorkOwned = Boolean(
|
||||
authUi?.user?.id &&
|
||||
selectedPublicWorkDetail?.ownerUserId === authUi.user.id,
|
||||
);
|
||||
const selectedPublicWorkActionMode = isSelectedPublicWorkOwned
|
||||
? 'edit'
|
||||
const selectedPublicWorkActionMode = selectedPublicWorkDetail
|
||||
? resolvePlatformPublicWorkActionMode(
|
||||
selectedPublicWorkDetail,
|
||||
authUi?.user?.id,
|
||||
)
|
||||
: 'remix';
|
||||
const isSelectedPublicWorkOwned = selectedPublicWorkActionMode === 'edit';
|
||||
|
||||
useEffect(() => {
|
||||
if (
|
||||
@@ -11574,54 +11578,33 @@ export function PlatformEntryFlowShellImpl({
|
||||
|
||||
const openPublicGalleryDetail = useCallback(
|
||||
(entry: PlatformPublicGalleryCard) => {
|
||||
if (isBigFishGalleryEntry(entry)) {
|
||||
openPublicWorkDetail(entry);
|
||||
return;
|
||||
const strategy = resolvePlatformPublicWorkDetailOpenStrategy(entry);
|
||||
switch (strategy.type) {
|
||||
case 'use-entry':
|
||||
openPublicWorkDetail(entry);
|
||||
return;
|
||||
case 'load-puzzle-detail':
|
||||
void openPuzzlePublicWorkDetail(strategy.profileId, {
|
||||
tab: platformBootstrap.platformTab,
|
||||
});
|
||||
return;
|
||||
case 'load-jump-hop-detail':
|
||||
void openJumpHopPublicWorkDetail(strategy.profileId);
|
||||
return;
|
||||
case 'load-wooden-fish-detail':
|
||||
void openWoodenFishPublicWorkDetail(strategy.profileId);
|
||||
return;
|
||||
case 'load-visual-novel-detail':
|
||||
void openVisualNovelPublicWorkDetail(strategy.profileId);
|
||||
return;
|
||||
case 'load-rpg-detail':
|
||||
void openRpgPublicWorkDetail(strategy.entry);
|
||||
return;
|
||||
default: {
|
||||
const exhaustive: never = strategy;
|
||||
return exhaustive;
|
||||
}
|
||||
}
|
||||
|
||||
if (isPuzzleGalleryEntry(entry)) {
|
||||
void openPuzzlePublicWorkDetail(entry.profileId, {
|
||||
tab: platformBootstrap.platformTab,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (isMatch3DGalleryEntry(entry)) {
|
||||
openPublicWorkDetail(entry);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isSquareHoleGalleryEntry(entry)) {
|
||||
openPublicWorkDetail(entry);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isJumpHopGalleryEntry(entry)) {
|
||||
void openJumpHopPublicWorkDetail(entry.profileId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isWoodenFishGalleryEntry(entry)) {
|
||||
void openWoodenFishPublicWorkDetail(entry.profileId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isVisualNovelGalleryEntry(entry)) {
|
||||
void openVisualNovelPublicWorkDetail(entry.profileId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isBarkBattleGalleryEntry(entry)) {
|
||||
openPublicWorkDetail(entry);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEdutainmentGalleryEntry(entry)) {
|
||||
openPublicWorkDetail(entry);
|
||||
return;
|
||||
}
|
||||
|
||||
void openRpgPublicWorkDetail(entry);
|
||||
},
|
||||
[
|
||||
openPuzzlePublicWorkDetail,
|
||||
|
||||
Reference in New Issue
Block a user