diff --git a/src/elements/content-preview/ContentPreview.js b/src/elements/content-preview/ContentPreview.js index 2b88d87a84..0119694bc8 100644 --- a/src/elements/content-preview/ContentPreview.js +++ b/src/elements/content-preview/ContentPreview.js @@ -132,6 +132,11 @@ type Props = { previewLibraryVersion: string, requestInterceptor?: Function, responseInterceptor?: Function, + accessPattern?: 'file_list' | 'direct_link' | 'shared_link', + prefetchStatus?: 'hit' | 'miss', + preloadStatus?: 'hit' | 'miss', + previewMode?: 'default' | 'shared_file' | 'shared_folder' | 'editable_shared_file' | 'inline_feed', + sharedLinkAuth?: 'logged_in' | 'logged_out' | 'na', sharedLink?: string, sharedLinkPassword?: string, showAnnotations?: boolean, @@ -899,6 +904,7 @@ class ContentPreview extends React.PureComponent { */ loadPreview = async (): Promise => { const { + accessPattern, advancedContentInsights, // will be removed once preview package will be updated to utilize feature flip for ACI annotatorState: { activeAnnotationId } = {}, renderCustomPreview, @@ -909,7 +915,11 @@ class ContentPreview extends React.PureComponent { onAnnotatorEvent, onAnnotator, onContentInsightsEventReport, + prefetchStatus, + preloadStatus, previewExperiences, + previewMode, + sharedLinkAuth, showAnnotationsControls, token: tokenOrTokenFunction, ...rest @@ -951,6 +961,7 @@ class ContentPreview extends React.PureComponent { } const previewOptions = { + accessPattern, advancedContentInsights, // will be removed once preview package will be updated to utilize feature flip for ACI container: `#${this.id} .bcpr-content`, enableBoundingBoxHighlights, @@ -960,6 +971,10 @@ class ContentPreview extends React.PureComponent { header: 'none', headerElement: `#${this.id} .bcpr-PreviewHeader`, experiences: previewExperiences, + prefetchStatus, + preloadStatus, + previewMode, + sharedLinkAuth, showAnnotations: this.canViewAnnotations(), showAnnotationsControls, showDownload: this.canDownload(), diff --git a/src/elements/content-preview/__tests__/ContentPreview.test.js b/src/elements/content-preview/__tests__/ContentPreview.test.js index 315013ac5a..806a13cbde 100644 --- a/src/elements/content-preview/__tests__/ContentPreview.test.js +++ b/src/elements/content-preview/__tests__/ContentPreview.test.js @@ -385,6 +385,44 @@ describe('elements/content-preview/ContentPreview', () => { ); }); + test('should forward host-supplied monitoring dimensions to preview options', async () => { + const wrapper = getWrapper({ + ...props, + accessPattern: 'file_list', + prefetchStatus: 'hit', + preloadStatus: 'miss', + previewMode: 'default', + sharedLinkAuth: 'na', + }); + wrapper.setState({ file }); + const instance = wrapper.instance(); + await instance.loadPreview(); + expect(instance.preview.show).toHaveBeenCalledWith( + file.id, + expect.any(Function), + expect.objectContaining({ + accessPattern: 'file_list', + prefetchStatus: 'hit', + preloadStatus: 'miss', + previewMode: 'default', + sharedLinkAuth: 'na', + }), + ); + }); + + test('should pass monitoring dimensions as undefined when host omits them', async () => { + const wrapper = getWrapper(props); + wrapper.setState({ file }); + const instance = wrapper.instance(); + await instance.loadPreview(); + const options = instance.preview.show.mock.calls[0][2]; + expect(options.accessPattern).toBeUndefined(); + expect(options.prefetchStatus).toBeUndefined(); + expect(options.preloadStatus).toBeUndefined(); + expect(options.previewMode).toBeUndefined(); + expect(options.sharedLinkAuth).toBeUndefined(); + }); + test('should call preview show with file version params if provided', async () => { const wrapper = getWrapper(props); wrapper.setState({