@@ -46,6 +46,7 @@ import {
4646 ORIGIN_CONTENT_PREVIEW ,
4747 ERROR_CODE_UNKNOWN ,
4848} from '../../constants' ;
49+ import type { ErrorType } from '../common/flowTypes' ;
4950import '../common/fonts.scss' ;
5051import '../common/base.scss' ;
5152import './ContentPreview.scss' ;
@@ -92,8 +93,8 @@ type Props = {
9293
9394type State = {
9495 currentFileId ?: string ,
96+ error ?: ErrorType ,
9597 file ?: BoxItem ,
96- isFileError : boolean ,
9798 isReloadNotificationVisible : boolean ,
9899 isThumbnailSidebarOpen : boolean ,
99100 prevFileIdProp ?: string , // the previous value of the "fileId" prop. Needed to implement getDerivedStateFromProps
@@ -129,13 +130,8 @@ type PreviewMetrics = {
129130 value : number ,
130131} ;
131132
132- type PreviewError = {
133- error : {
134- code : string ,
135- details : Object ,
136- displayMessage : string ,
137- message : string ,
138- } ,
133+ type PreviewLibraryError = {
134+ error : ErrorType ,
139135} ;
140136
141137const InvalidIdError = new Error ( 'Invalid id for Preview!' ) ;
@@ -170,7 +166,7 @@ class ContentPreview extends PureComponent<Props, State> {
170166 updateVersionToCurrent : ?( ) = > void ;
171167
172168 initialState : State = {
173- isFileError : false ,
169+ error : undefined ,
174170 isReloadNotificationVisible : false ,
175171 isThumbnailSidebarOpen : false ,
176172 } ;
@@ -517,16 +513,17 @@ class ContentPreview extends PureComponent<Props, State> {
517513 /**
518514 * Handler for 'preview_error' preview event
519515 *
520- * @param {PreviewError } previewError - the error data emitted from preview
516+ * @param {PreviewLibraryError } previewError - the error data emitted from preview
521517 * @return {void }
522518 */
523- onPreviewError = ( { error, ...rest } : PreviewError ) : void => {
519+ onPreviewError = ( { error, ...rest } : PreviewLibraryError ) : void => {
524520 const { code = ERROR_CODE_UNKNOWN } = error ;
521+ const { onError } = this . props ;
525522
526523 // In case of error, there should be no thumbnail sidebar to account for
527524 this . setState ( { isThumbnailSidebarOpen : false } ) ;
528525
529- this . props . onError (
526+ onError (
530527 error ,
531528 code ,
532529 {
@@ -797,8 +794,14 @@ class ContentPreview extends PureComponent<Props, State> {
797794 * @return {void }
798795 */
799796 fetchFileErrorCallback = ( fileError : ElementsXhrError , code : string ) : void => {
800- this . setState ( { isFileError : true } ) ;
801- this . props . onError ( fileError , code , {
797+ const { onError } = this . props ;
798+ const errorCode = fileError . code || code ;
799+ const error = {
800+ code : errorCode ,
801+ message : fileError . message ,
802+ } ;
803+ this . setState ( { error, file : undefined } ) ;
804+ onError ( fileError , errorCode , {
802805 error : fileError ,
803806 } ) ;
804807 } ;
@@ -1102,8 +1105,8 @@ class ContentPreview extends PureComponent<Props, State> {
11021105 } : Props = this . props ;
11031106
11041107 const {
1108+ error,
11051109 file,
1106- isFileError,
11071110 isReloadNotificationVisible,
11081111 currentFileId,
11091112 isThumbnailSidebarOpen,
@@ -1122,6 +1125,7 @@ class ContentPreview extends PureComponent<Props, State> {
11221125 return null ;
11231126 }
11241127
1128+ const errorCode = getProp ( error , 'code' ) ;
11251129 const currentVersionId = getProp ( file , 'file_version.id' ) ;
11261130 const selectedVersionId = getProp ( selectedVersion , 'id' , currentVersionId ) ;
11271131 const onHeaderClose = currentVersionId === selectedVersionId ? onClose : this . updateVersionToCurrent ;
@@ -1153,7 +1157,8 @@ class ContentPreview extends PureComponent<Props, State> {
11531157 ) : (
11541158 < div className = "bcpr-loading-wrapper" >
11551159 < PreviewLoading
1156- isLoading = { ! isFileError }
1160+ errorCode = { errorCode }
1161+ isLoading = { ! errorCode }
11571162 loadingIndicatorProps = { {
11581163 size : 'large' ,
11591164 } }
0 commit comments