From 07fde28ddb9dd26dabb1c736f6a62fe642bb8003 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Thu, 2 Sep 2021 05:53:29 +0800 Subject: [PATCH] Fix wrong attachment removal (#16915) --- web_src/js/index.js | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/web_src/js/index.js b/web_src/js/index.js index ba025cfade..5ea16f44f8 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -1030,7 +1030,7 @@ async function initRepository() { if ($dropzone.length === 1) { $dropzone.data('saved', false); - const filenameDict = {}; + const fileUuidDict = {}; dz = await createDropzone($dropzone[0], { url: $dropzone.data('upload-url'), headers: {'X-Csrf-Token': csrf}, @@ -1048,28 +1048,24 @@ async function initRepository() { thumbnailHeight: 480, init() { this.on('success', (file, data) => { - filenameDict[file.name] = { - uuid: data.uuid, + fileUuidDict[file.uuid] = { submitted: false }; const input = $(``).val(data.uuid); $dropzone.find('.files').append(input); }); this.on('removedfile', (file) => { - if (!(file.name in filenameDict)) { - return; - } - $(`#${filenameDict[file.name].uuid}`).remove(); - if ($dropzone.data('remove-url') && !filenameDict[file.name].submitted) { + $(`#${file.uuid}`).remove(); + if ($dropzone.data('remove-url') && !fileUuidDict[file.uuid].submitted) { $.post($dropzone.data('remove-url'), { - file: filenameDict[file.name].uuid, + file: file.uuid, _csrf: csrf, }); } }); this.on('submit', () => { - $.each(filenameDict, (name) => { - filenameDict[name].submitted = true; + $.each(fileUuidDict, (fileUuid) => { + fileUuidDict[fileUuid].submitted = true; }); }); this.on('reload', () => { @@ -1082,9 +1078,8 @@ async function initRepository() { dz.emit('thumbnail', this, imgSrc); dz.emit('complete', this); dz.files.push(this); - filenameDict[this.name] = { + fileUuidDict[this.uuid] = { submitted: true, - uuid: this.uuid }; $dropzone.find(`img[src='${imgSrc}']`).css('max-width', '100%'); const input = $(``).val(this.uuid); @@ -2695,7 +2690,6 @@ $(document).ready(async () => { // Dropzone for (const el of document.querySelectorAll('.dropzone')) { - const filenameDict = {}; const $dropzone = $(el); await createDropzone(el, { url: $dropzone.data('upload-url'), @@ -2713,18 +2707,15 @@ $(document).ready(async () => { thumbnailWidth: 480, thumbnailHeight: 480, init() { - this.on('success', (file, data) => { - filenameDict[file.name] = data.uuid; + this.on('success', (_file, data) => { const input = $(``).val(data.uuid); $dropzone.find('.files').append(input); }); this.on('removedfile', (file) => { - if (file.name in filenameDict) { - $(`#${filenameDict[file.name]}`).remove(); - } + $(`#${file.uuid}`).remove(); if ($dropzone.data('remove-url')) { $.post($dropzone.data('remove-url'), { - file: filenameDict[file.name], + file: file.uuid, _csrf: csrf }); }