Răsfoiți Sursa

fix: move null-check to dnd callback

Christian Kotzbauer 7 ani în urmă
părinte
comite
cb6e841f78

+ 7 - 1
packages/ckeditor5-image/src/imageupload/imageuploadediting.js

@@ -55,7 +55,13 @@ export default class ImageUploadEditing extends Plugin {
 				return;
 			}
 
-			const images = Array.from( data.dataTransfer.files ).filter( isImageType );
+			const images = Array.from( data.dataTransfer.files ).filter( file => {
+				if ( !file ) {
+					return false;
+				}
+
+				return isImageType( file );
+			} );
 
 			const ranges = data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) );
 

+ 0 - 4
packages/ckeditor5-image/src/imageupload/utils.js

@@ -14,10 +14,6 @@
  * @returns {Boolean}
  */
 export function isImageType( file ) {
-	if ( !file || !file.type ) {
-		return false;
-	}
-
 	const types = /^image\/(jpeg|png|gif|bmp)$/;
 
 	return types.test( file.type );

+ 14 - 0
packages/ckeditor5-image/tests/imageupload/imageuploadediting.js

@@ -197,6 +197,20 @@ describe( 'ImageUploadEditing', () => {
 		expect( getModelData( model ) ).to.equal( '<paragraph>foo[]</paragraph>' );
 	} );
 
+	it( 'should not insert image when file is null', () => {
+		const viewDocument = editor.editing.view.document;
+		const dataTransfer = new DataTransfer( { files: [ null ], types: [ 'Files' ] } );
+
+		setModelData( model, '<paragraph>foo[]</paragraph>' );
+
+		const targetRange = doc.selection.getFirstRange();
+		const targetViewRange = editor.editing.mapper.toViewRange( targetRange );
+
+		viewDocument.fire( 'clipboardInput', { dataTransfer, targetRanges: [ targetViewRange ] } );
+
+		expect( getModelData( model ) ).to.equal( '<paragraph>foo[]</paragraph>' );
+	} );
+
 	it( 'should not insert image when there is non-empty HTML content pasted', () => {
 		const fileMock = createNativeFileMock();
 		const dataTransfer = new DataTransfer( {

+ 0 - 8
packages/ckeditor5-image/tests/imageupload/utils.js

@@ -27,13 +27,5 @@ describe( 'upload utils', () => {
 			expect( isImageType( { type: 'audio/mp3' } ) ).to.be.false;
 			expect( isImageType( { type: 'video/mpeg' } ) ).to.be.false;
 		} );
-
-		it( 'should return false for null type', () => {
-			expect( isImageType( { type: null } ) ).to.be.false;
-		} );
-
-		it( 'should return false for null file', () => {
-			expect( isImageType( null ) ).to.be.false;
-		} );
 	} );
 } );