diff --git a/projects/packages/videopress/changelog/update-videopress-fix-replace-when-uploading-video-issue b/projects/packages/videopress/changelog/update-videopress-fix-replace-when-uploading-video-issue new file mode 100644 index 0000000000000..9ddabc42646ba --- /dev/null +++ b/projects/packages/videopress/changelog/update-videopress-fix-replace-when-uploading-video-issue @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +VideoPress: fix replace video by uploading a new file issue diff --git a/projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/uploader-progress.js b/projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/uploader-progress.js index 653ef869d4eb3..67b83b493be92 100644 --- a/projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/uploader-progress.js +++ b/projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/uploader-progress.js @@ -113,8 +113,7 @@ const usePosterAndTitleUpdate = ( { setAttributes, videoData, onDone } ) => { Promise.allSettled( updates ).then( () => { setIsFinishingUpdate( false ); - setAttributes( videoData ); - onDone(); + onDone( videoData ); } ); }; diff --git a/projects/packages/videopress/src/client/block-editor/blocks/video/edit.tsx b/projects/packages/videopress/src/client/block-editor/blocks/video/edit.tsx index 71fa86285ea16..2c329a24aec2c 100644 --- a/projects/packages/videopress/src/client/block-editor/blocks/video/edit.tsx +++ b/projects/packages/videopress/src/client/block-editor/blocks/video/edit.tsx @@ -390,11 +390,19 @@ export default function VideoPressEdit( { // Render uploading block view if ( isUploadingFile ) { - const handleDoneUpload = () => { + const handleDoneUpload = newVideoData => { setIsUploadingFile( false ); if ( isReplacingFile.isReplacing ) { + const newBlockAttributes = { + ...attributes, + ...newVideoData, + }; + + // Delete attributes that are not needed. + delete newBlockAttributes.poster; + setIsReplacingFile( { isReplacing: false, prevAttrs: {} } ); - replaceBlock( clientId, createBlock( 'videopress/video', { ...attributes } ) ); + replaceBlock( clientId, createBlock( 'videopress/video', newBlockAttributes ) ); } }; @@ -498,8 +506,12 @@ export default function VideoPressEdit( { setFileToUpload( media ); } } onSelectVideoFromLibrary={ media => { - const mediaGuid = media.videopress_guid?.[ 0 ] ?? media.videopress_guid; + // Depending on the endpoint, `videopress_guid` can be an array or a string. + const mediaGuid = Array.isArray( media.videopress_guid ) + ? media.videopress_guid[ 0 ] + : media.videopress_guid; if ( ! mediaGuid ) { + debug( 'No media guid provided' ); return; }