Skip to content

Commit d684125

Browse files
authored
Merge pull request #16 from duduribeiro/bug-fix
Check if pastedFile is a file before run getAsFile
2 parents 4f207bf + fe6c0e9 commit d684125

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/file-attachment-element.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ const images = /^image\/(gif|png|jpeg)$/
116116

117117
function pastedFile(items: DataTransferItemList): File | null {
118118
for (const item of items) {
119-
if (images.test(item.type)) {
119+
if (item.kind === 'file' && images.test(item.type)) {
120120
return item.getAsFile()
121121
}
122122
}

test/test.js

+14
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,20 @@ describe('file-attachment', function () {
172172
assert.equal(dragEvent, event)
173173
assert.equal(true, event.defaultPrevented)
174174
})
175+
176+
it('attaches the correct file when browser sends multiple data transfer items with image as type', async function () {
177+
const listener = once('file-attachment-accepted')
178+
179+
const dataTransfer = new DataTransfer()
180+
const file = new File(['hubot'], 'test.png', {type: 'image/png'})
181+
dataTransfer.items.add('some string', 'image/jpeg')
182+
dataTransfer.items.add(file)
183+
const dropEvent = new ClipboardEvent('paste', {bubbles: true, clipboardData: dataTransfer})
184+
fileAttachment.dispatchEvent(dropEvent)
185+
186+
const event = await listener
187+
assert.equal('test.png', event.detail.attachments[0].file.name)
188+
})
175189
})
176190
})
177191

0 commit comments

Comments
 (0)