refactor: 深化公开作品详情状态策略

This commit is contained in:
2026-06-03 22:38:26 +08:00
parent 00820e6571
commit dd52848e9c
5 changed files with 199 additions and 20 deletions

View File

@@ -516,7 +516,9 @@ import {
type RecommendRuntimeKind,
} from './platformPublicGalleryFlow';
import {
resolveActivePlatformPublicWorkAuthorEntry,
resolvePlatformPublicWorkActionMode,
resolvePlatformPublicWorkDetailOpenDecision,
resolvePlatformPublicWorkDetailOpenStrategy,
} from './platformPublicWorkDetailFlow';
import {
@@ -10908,20 +10910,19 @@ export function PlatformEntryFlowShellImpl({
const openPublicWorkDetail = useCallback(
(entry: PlatformPublicGalleryCard) => {
if (!canExposePublicWork(entry)) {
setSelectedPublicWorkDetail(null);
setPublicWorkDetailError(EDUTAINMENT_HIDDEN_MESSAGE);
setSelectionStage('platform');
const decision = resolvePlatformPublicWorkDetailOpenDecision(entry);
if (decision.type === 'blocked') {
setSelectedPublicWorkDetail(decision.selectedDetail);
setPublicWorkDetailError(decision.errorMessage);
setSelectionStage(decision.selectionStage);
return;
}
setSelectedPublicWorkDetail(entry);
setPublicWorkDetailError(null);
setSelectionStage('work-detail');
if (entry.publicWorkCode?.trim()) {
pushAppHistoryPath(
buildPublicWorkStagePath('work-detail', entry.publicWorkCode),
);
setSelectedPublicWorkDetail(decision.selectedDetail);
setPublicWorkDetailError(decision.errorMessage);
setSelectionStage(decision.selectionStage);
if (decision.historyPath) {
pushAppHistoryPath(decision.historyPath);
}
},
[setSelectionStage],
@@ -11118,14 +11119,11 @@ export function PlatformEntryFlowShellImpl({
);
useEffect(() => {
const detailEntry =
selectionStage === 'work-detail'
? selectedPublicWorkDetail
: selectionStage === 'detail' &&
selectedDetailEntry &&
selectedDetailEntry.visibility !== 'draft'
? mapRpgGalleryCardToPublicWorkDetail(selectedDetailEntry)
: null;
const detailEntry = resolveActivePlatformPublicWorkAuthorEntry({
selectionStage,
selectedPublicWorkDetail,
selectedRpgDetailEntry: selectedDetailEntry,
});
if (!detailEntry) {
clearSelectedPublicWorkAuthor();