diff --git a/src/web/app/desktop/tags/drive/browser.tag b/src/web/app/desktop/tags/drive/browser.tag index 7eaa7ed6e..9f3c14f82 100644 --- a/src/web/app/desktop/tags/drive/browser.tag +++ b/src/web/app/desktop/tags/drive/browser.tag @@ -516,13 +516,23 @@ }; this.chooseFile = file => { - if (this.selectedFiles.some(f => f.id == file.id)) { - this.selectedFiles = this.selectedFiles.filter(f => f.id != file.id); + const isAlreadySelected = this.selectedFiles.some(f => f.id == file.id); + if (this.multiple) { + if (isAlreadySelected) { + this.selectedFiles = this.selectedFiles.filter(f => f.id != file.id); + } else { + this.selectedFiles.push(file); + } + this.update(); + this.trigger('change-selection', this.selectedFiles); } else { - this.selectedFiles.push(file); + if (isAlreadySelected) { + this.trigger('selected', file); + } else { + this.selectedFiles = [file]; + this.trigger('change-selection', [file]); + } } - this.update(); - this.trigger('change-selection', this.selectedFiles); }; this.newWindow = folderId => { diff --git a/src/web/app/desktop/tags/drive/file.tag b/src/web/app/desktop/tags/drive/file.tag index 47416db0b..519d04f6d 100644 --- a/src/web/app/desktop/tags/drive/file.tag +++ b/src/web/app/desktop/tags/drive/file.tag @@ -156,6 +156,7 @@ this.browser.on('change-selection', selections => { this.isSelected = selections.some(f => f.id == this.file.id); + this.update(); }); this.onclick = () => { diff --git a/src/web/app/desktop/tags/select-file-from-drive-window.tag b/src/web/app/desktop/tags/select-file-from-drive-window.tag index ed1c1bce6..5dba76d1f 100644 --- a/src/web/app/desktop/tags/select-file-from-drive-window.tag +++ b/src/web/app/desktop/tags/select-file-from-drive-window.tag @@ -142,7 +142,7 @@ this.on('mount', () => { this.refs.window.refs.browser.on('selected', file => { - this.files = file; + this.files = [file]; this.ok(); }); @@ -166,7 +166,7 @@ }; this.ok = () => { - this.trigger('selected', this.files); + this.trigger('selected', this.multiple ? this.files : this.files[0]); this.refs.window.close(); };