UNPKG

@wordpress/editor

Version:
53 lines (46 loc) 1.18 kB
/** * WordPress dependencies */ import { useSelect, useDispatch } from '@wordpress/data'; import { useEffect } from '@wordpress/element'; import { store as uploadStore } from '@wordpress/upload-media'; /** * Internal dependencies */ import { store as editorStore } from '../../store'; const LOCK_NAME = 'upload-in-progress'; /** * A hook that locks post saving and autosaving while media uploads are in progress. * This prevents users from publishing or saving while files are still uploading. */ export default function useUploadSaveLock() { const isUploading = useSelect( ( select ) => select( uploadStore ).isUploading(), [] ); const { lockPostSaving, unlockPostSaving, lockPostAutosaving, unlockPostAutosaving, } = useDispatch( editorStore ); useEffect( () => { if ( isUploading ) { lockPostSaving( LOCK_NAME ); lockPostAutosaving( LOCK_NAME ); } else { unlockPostSaving( LOCK_NAME ); unlockPostAutosaving( LOCK_NAME ); } return () => { unlockPostSaving( LOCK_NAME ); unlockPostAutosaving( LOCK_NAME ); }; }, [ isUploading, lockPostSaving, unlockPostSaving, lockPostAutosaving, unlockPostAutosaving, ] ); }