From c9f582359cca61f48764873b8bc9a5cf473eb4b6 Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Thu, 24 Oct 2024 13:25:42 +0700 Subject: [PATCH] fix: double upload attachment --- src/stores/utils/index.ts | 41 +++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/stores/utils/index.ts b/src/stores/utils/index.ts index 7be254c5..c2423210 100644 --- a/src/stores/utils/index.ts +++ b/src/stores/utils/index.ts @@ -1,11 +1,13 @@ import { Dialog, QSelect, Notify, QNotifyCreateOptions } from 'quasar'; -import GlobalDialog from 'components/GlobalDialog.vue'; -import DialogDuplicateData from 'components/DialogDuplicateData.vue'; +import { Ref, ref } from 'vue'; +import axios, { AxiosInstance, AxiosProgressEvent } from 'axios'; import { ComposerTranslation } from 'vue-i18n'; import { defineStore } from 'pinia'; -import { Ref, ref } from 'vue'; + import { getRole } from 'src/services/keycloak'; -import { AxiosInstance, AxiosProgressEvent } from 'axios'; + +import GlobalDialog from 'components/GlobalDialog.vue'; +import DialogDuplicateData from 'components/DialogDuplicateData.vue'; export const baseUrl = import.meta.env.VITE_API_BASE_URL; @@ -291,21 +293,26 @@ export function manageAttachment( onUploadProgress?: (e: AxiosProgressEvent) => void; abortController?: AbortController; }) => { - const res = await api.put( + const urlRes = await api.put( `/${base}/${opts.parentId}/attachment/${opts.name}`, - opts.file, - { - headers: { 'Content-Type': opts.file.type }, - onUploadProgress: opts.onUploadProgress - ? opts.onUploadProgress - : option?.onUploadProgress - ? option.onUploadProgress - : (e) => console.log(e), - signal: opts.abortController?.signal, - }, ); - if (res.status < 400) return true; - return false; + + if (urlRes.status >= 400) return false; + + // NOTE: Must use axios instance or else CORS error. + const uploadRes = await axios.put(urlRes.data, opts.file, { + headers: { 'Content-Type': opts.file.type }, + onUploadProgress: opts.onUploadProgress + ? opts.onUploadProgress + : option?.onUploadProgress + ? option.onUploadProgress + : (e) => console.log(e), + signal: opts.abortController?.signal, + }); + + if (uploadRes.status >= 400) return false; + + return true; }, delAttachment: async (opts: { parentId: string; name: string }) => { const res = await api.delete(