diff --git a/app/javascript/dashboard/api/captain/document.js b/app/javascript/dashboard/api/captain/document.js index dc22b0c32..a4ec6b23e 100644 --- a/app/javascript/dashboard/api/captain/document.js +++ b/app/javascript/dashboard/api/captain/document.js @@ -15,6 +15,14 @@ class CaptainDocument extends ApiClient { }, }); } + + uploadPdf(formData) { + return axios.post(`${this.url}/upload_pdf`, formData, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + }); + } } export default new CaptainDocument(); diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/document/CreateDocumentDialog.vue b/app/javascript/dashboard/components-next/captain/pageComponents/document/CreateDocumentDialog.vue index 7db74f523..40ad2cc6a 100644 --- a/app/javascript/dashboard/components-next/captain/pageComponents/document/CreateDocumentDialog.vue +++ b/app/javascript/dashboard/components-next/captain/pageComponents/document/CreateDocumentDialog.vue @@ -7,7 +7,7 @@ import { useI18n } from 'vue-i18n'; import Dialog from 'dashboard/components-next/dialog/Dialog.vue'; import DocumentForm from './DocumentForm.vue'; -const emit = defineEmits(['close']); +const emit = defineEmits(['close', 'success']); const { t } = useI18n(); const store = useStore(); @@ -18,12 +18,32 @@ const i18nKey = 'CAPTAIN.DOCUMENTS.CREATE'; const handleSubmit = async newDocument => { try { - await store.dispatch('captainDocuments/create', newDocument); - useAlert(t(`${i18nKey}.SUCCESS_MESSAGE`)); + if (newDocument.type === 'pdf') { + // Handle PDF upload + const formData = new FormData(); + formData.append('pdf_document', newDocument.pdf_document); + formData.append('assistant_id', newDocument.assistant_id); + + await store.dispatch('captainDocuments/uploadPdf', formData); + useAlert('PDF uploaded successfully! Processing will begin shortly.'); + } else { + // Handle URL creation + await store.dispatch('captainDocuments/create', { + document: { + external_link: newDocument.external_link, + assistant_id: newDocument.assistant_id, + }, + }); + useAlert('Document created successfully!'); + } + + // Emit success event to refresh the list + emit('success'); dialogRef.value.close(); } catch (error) { const errorMessage = - error?.response?.message || t(`${i18nKey}.ERROR_MESSAGE`); + error?.response?.data?.message || + 'Failed to create document. Please try again.'; useAlert(errorMessage); } }; @@ -42,8 +62,8 @@ defineExpose({ dialogRef });