@@ -2,88 +2,34 @@ import { useEffect, useMemo, useState } from 'react';
22import { PageAppSDK } from '@contentful/app-sdk' ;
33import { Button , Flex , Heading , Layout , Note , Paragraph } from '@contentful/f36-components' ;
44import Splitter from './Splitter' ;
5- import { MappingReviewSuspendPayload , PreviewPayload , ResumePayload } from '@types' ;
5+ import { MappingReviewSuspendPayload , PreviewPayload } from '@types' ;
66import { ConfirmCancelModal } from '../modals/ConfirmCancelModal' ;
77import { loadGoogleDocsReviewData } from '../../../../fixtures/googleDocsReview' ;
88import { GoogleDocsMappingReviewScreen } from '../review-prototype/GoogleDocsMappingReviewScreen' ;
99import OverviewSection from '../overview/OverviewSection' ;
10+ import { useSDK } from '@contentful/react-apps-toolkit' ;
11+ import { PageAppSDK } from '@contentful/app-sdk' ;
12+ import { isMappingReviewSuspendPayload } from '../../../../utils/utils' ;
1013
1114interface PreviewPageViewProps {
12- payload : PreviewPayload ;
15+ payload : PreviewPayload | MappingReviewSuspendPayload ;
1316 oauthToken : string ;
1417 onLeavePreview : ( ) => void ;
18+ onResumeMappingReview ?: ( ) => Promise < void > ;
1519}
1620
17- export const PreviewPageView = ( { payload, oauthToken, onLeavePreview } : PreviewPageViewProps ) => {
21+ export const PreviewPageView = ( {
22+ payload,
23+ oauthToken,
24+ onLeavePreview,
25+ onResumeMappingReview,
26+ } : PreviewPageViewProps ) => {
1827 const sdk = useSDK < PageAppSDK > ( ) ;
1928 const [ isConfirmCancelModalOpen , setIsConfirmCancelModalOpen ] = useState ( false ) ;
20- const [ isContinuing , setIsContinuing ] = useState ( false ) ;
21- const fixture = isFixtureMode ? loadGoogleDocsReviewData ( ) : null ;
22- const reviewFixture = useMemo ( ( ) => {
23- if ( isFixtureMode ) {
24- return fixture ;
25- }
26-
27- if ( props . mode === 'workflow' ) {
28- return buildFixtureFromCompletedPayload ( props . payload ) ;
29- }
30-
31- return buildFixtureFromMappingReviewPayload ( props . payload ) ;
32- } , [ fixture , isFixtureMode , props ] ) ;
33-
34- useEffect ( ( ) => {
35- if ( ! reviewFixture ) {
36- console . warn (
37- '[google-docs][preview]' ,
38- 'Fixture review screen could not be rendered because no valid fixture was loaded.'
39- ) ;
40- return ;
41- }
42-
43- console . log ( '[google-docs][preview]' , 'Resolved preview fixture state...' , {
44- mode : props . mode ,
45- entryCount : reviewFixture . entries . length ,
46- assetCount : reviewFixture . assets . length ,
47- contentBlockCount : reviewFixture . originalNormalizedDocument . contentBlocks . length ,
48- tableCount : reviewFixture . originalNormalizedDocument . tables . length ,
49- graphEntryCount : reviewFixture . entryBlockGraph . entries . length ,
50- } ) ;
51- } , [ props . mode , reviewFixture ] ) ;
52-
53- const title = isFixtureMode
54- ? 'Create from fixture preview'
55- : isMappingReviewMode
56- ? `Review document "${
57- props . payload . documentTitle ??
58- props . payload . normalizedDocument . title ??
59- props . payload . documentId
60- } "`
61- : `Create from document "${ props . payload . normalizedDocument ?. title ?? 'Selected document' } "` ;
62-
63- const handleContinue = async ( ) => {
64- if ( props . mode !== 'mappingReview' || isContinuing ) {
65- return ;
66- }
67-
68- const resumePayload = {
69- editedNormalizedDocument :
70- reviewFixture ?. editableNormalizedDocument ?? props . payload . normalizedDocument ,
71- entryBlockGraph : reviewFixture ?. entryBlockGraph ?? props . payload . entryBlockGraph ,
72- } ;
73-
74- console . log ( '[google-docs][preview]' , 'Continuing mapping review with current graph state.' , {
75- contentBlockCount : resumePayload . editedNormalizedDocument . contentBlocks . length ,
76- tableCount : resumePayload . editedNormalizedDocument . tables . length ,
77- graphEntryCount : resumePayload . entryBlockGraph . entries . length ,
78- } ) ;
79-
80- setIsContinuing ( true ) ;
81- try {
82- await props . onContinue ( resumePayload ) ;
83- } finally {
84- setIsContinuing ( false ) ;
85- }
86- } ;
29+ const mappingReviewPayload = isMappingReviewSuspendPayload ( payload ) ? payload : null ;
30+ const rawTitle = payload . normalizedDocument ?. title ;
31+ const docTitle = typeof rawTitle === 'string' ? rawTitle : undefined ;
32+ const title = docTitle && docTitle . trim ( ) . length > 0 ? docTitle : 'Selected document' ;
8733
8834 return (
8935 < >
@@ -109,6 +55,7 @@ export const PreviewPageView = ({ payload, oauthToken, onLeavePreview }: Preview
10955 payload = { payload }
11056 oauthToken = { oauthToken }
11157 onReturnToMainPage = { onLeavePreview }
58+ onCreateSelected = { mappingReviewPayload ? onResumeMappingReview : undefined }
11259 />
11360 < Heading as = "h2" marginBottom = "none" >
11461 Document outline
0 commit comments