From 0b23e91f8dc3565deaff8c55beba166e959da1a4 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 18 Jan 2021 21:58:34 +0100 Subject: [PATCH] Make sure attachements are only added once to the list after uploading + Make sure the attachment list shows up every time after adding an attachment --- src/components/input/multiselect.vue | 2 -- .../tasks/mixins/attachmentUpload.js | 9 ++++- src/components/tasks/partials/attachments.vue | 36 ++++--------------- src/views/tasks/TaskDetailView.vue | 5 ++- 4 files changed, 19 insertions(+), 33 deletions(-) diff --git a/src/components/input/multiselect.vue b/src/components/input/multiselect.vue index 2e908b26..7498b9b0 100644 --- a/src/components/input/multiselect.vue +++ b/src/components/input/multiselect.vue @@ -302,8 +302,6 @@ export default { }, createOrSelectOnEnter() { - console.log('enter', this.creatableAvailable, this.searchResults.length) - if (!this.creatableAvailable && this.searchResults.length === 1) { this.select(this.searchResults[0]) return diff --git a/src/components/tasks/mixins/attachmentUpload.js b/src/components/tasks/mixins/attachmentUpload.js index 08580f62..d08226f8 100644 --- a/src/components/tasks/mixins/attachmentUpload.js +++ b/src/components/tasks/mixins/attachmentUpload.js @@ -8,13 +8,20 @@ export default { const attachmentService = new AttachmentService() + this.createAttachment(attachmentService, files, onSuccess) + }, + createAttachment(attachmentService, files, onSuccess = () => {}) { const attachmentModel = new AttachmentModel({taskId: this.taskId}) attachmentService.create(attachmentModel, files) .then(r => { if (r.success !== null) { r.success.forEach(a => { + this.$store.commit('attachments/removeById', a.id) this.$store.commit('attachments/add', a) - this.$store.dispatch('tasks/addTaskAttachment', {taskId: this.taskId, attachment: a}) + this.$store.dispatch('tasks/addTaskAttachment', { + taskId: this.taskId, + attachment: a, + }) onSuccess(`${window.API_URL}/tasks/${this.taskId}/attachments/${a.id}`) }) } diff --git a/src/components/tasks/partials/attachments.vue b/src/components/tasks/partials/attachments.vue index 1224a923..519da02c 100644 --- a/src/components/tasks/partials/attachments.vue +++ b/src/components/tasks/partials/attachments.vue @@ -56,18 +56,13 @@

Download @@ -138,6 +133,7 @@ import AttachmentService from '../../../services/attachment' import AttachmentModel from '../../../models/attachment' import User from '../../misc/user' +import attachmentUpload from '@/components/tasks/mixins/attachmentUpload' import { mapState } from 'vuex' export default { @@ -145,6 +141,9 @@ export default { components: { User, }, + mixins: [ + attachmentUpload, + ], data() { return { attachmentService: AttachmentService, @@ -215,28 +214,7 @@ export default { this.uploadFiles(this.$refs.files.files) }, uploadFiles(files) { - const attachmentModel = new AttachmentModel({ taskId: this.taskId }) - this.attachmentService - .create(attachmentModel, files) - .then((r) => { - if (r.success !== null) { - r.success.forEach((a) => { - this.$store.commit('attachments/add', a) - this.$store.dispatch('tasks/addTaskAttachment', { - taskId: this.taskId, - attachment: a, - }) - }) - } - if (r.errors !== null) { - r.errors.forEach((m) => { - this.error(m) - }) - } - }) - .catch((e) => { - this.error(e, this) - }) + this.createAttachment(this.attachmentService, files) }, deleteAttachment() { this.attachmentService diff --git a/src/views/tasks/TaskDetailView.vue b/src/views/tasks/TaskDetailView.vue index 854d4fc9..9dd229ee 100644 --- a/src/views/tasks/TaskDetailView.vue +++ b/src/views/tasks/TaskDetailView.vue @@ -200,7 +200,7 @@ -

+
0 + }, }, methods: { loadTask() {