From 3403232626bf78aa45071850dfdc8f1a2f77cae3 Mon Sep 17 00:00:00 2001 From: AndzejsP Date: Tue, 30 May 2023 13:29:49 +0300 Subject: [PATCH] added drag n drop for discussions --- web/src/views/DiscussionsView.vue | 36 +++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/web/src/views/DiscussionsView.vue b/web/src/views/DiscussionsView.vue index c7230f41..98412cbd 100644 --- a/web/src/views/DiscussionsView.vue +++ b/web/src/views/DiscussionsView.vue @@ -127,7 +127,7 @@
- Drop your discussion file here + Drop your discussion file here
@@ -909,10 +909,21 @@ export default { a.click(); document.body.removeChild(a); }, + parseJsonObj(obj){ + try { + const ret = JSON.parse(obj) + return ret + } catch (error) { + this.$refs.toast.showToast("Could not parse JSON. \n"+error.message, 4, false) + return null + } + + }, async parseJsonFile(file) { + return new Promise((resolve, reject) => { const fileReader = new FileReader() - fileReader.onload = event => resolve(JSON.parse(event.target.result)) + fileReader.onload = event => resolve(this.parseJsonObj(event.target.result)) fileReader.onerror = error => reject(error) fileReader.readAsText(file) }) @@ -1037,10 +1048,23 @@ export default { this.$refs.dragdropChat.show = true }, - setFileListDiscussion(files) { - this.fileList = files - this.$refs.dragdropDiscussion.fileList = this.fileList - //console.log('dropppp', this.fileList) + async setFileListDiscussion(files) { + + if(files.length > 1){ + this.$refs.toast.showToast("Failed to import discussions. Too many files", 4, false) + return + } + const obj = await this.parseJsonFile(files[0]) + + const res = await this.import_multiple_discussions(obj) + if (res) { + this.$refs.toast.showToast("Successfully imported (" + obj.length + ")", 4, true) + await this.list_discussions() + } else { + this.$refs.toast.showToast("Failed to import discussions", 4, false) + } + + this.isDragOverDiscussion = false }, setDropZoneDiscussion() {