diff --git a/src/components/Documents/ManageDocument.jsx b/src/components/Documents/ManageDocument.jsx index a285c55e..14b76475 100644 --- a/src/components/Documents/ManageDocument.jsx +++ b/src/components/Documents/ManageDocument.jsx @@ -15,6 +15,7 @@ import { } from "../../hooks/useDocument"; import showToast from "../../services/toastService"; import { useDocumentContext } from "./Documents"; +import { isPending } from "@reduxjs/toolkit"; const toBase64 = (file) => new Promise((resolve, reject) => { @@ -24,6 +25,34 @@ const toBase64 = (file) => reader.onerror = (err) => reject(err); }); +const MergedTagsWithExistenStatus = (formTags = [], originalTags = []) => { + const tagMap = new Map(); + + const safeFormTags = Array.isArray(formTags) ? formTags : []; + const safeOriginalTags = Array.isArray(originalTags) ? originalTags : []; + + safeOriginalTags.forEach(tag => { + if (tag?.name) { + tagMap.set(tag.name, { ...tag, isActive: tag.isActive ?? true }); + } + }); + + safeFormTags.forEach(tag => { + if (tag?.name) { + tagMap.set(tag.name, { ...tag, isActive: true }); + } + }); + + safeOriginalTags.forEach(tag => { + if (tag?.name && !safeFormTags.some(t => t.name === tag.name)) { + tagMap.set(tag.name, { ...tag, isActive: false }); + } + }); + + return Array.from(tagMap.values()); +}; + + const ManageDocument = ({ closeModal, Document_Entity, Entity }) => { const { ManageDoc } = useDocumentContext(); const isUpdateForm = Boolean(ManageDoc?.document); @@ -45,19 +74,26 @@ const ManageDocument = ({ closeModal, Document_Entity, Entity }) => { reset, formState: { errors }, } = methods; - const { mutate: UploadDocument, isPending } = useUploadDocument(() => { - showToast("Document Uploaded Successfully", "success"); - closeModal(); - }); - const { mutate: UpdateDocument, isPending: isUpdatinDoc } = useUpdateDocument( + const { mutate: UploadDocument, isPending: isUploading } = useUploadDocument( + () => { + showToast("Document Uploaded Successfully", "success"); + closeModal(); + } + ); + const { mutate: UpdateDocument, isPending: isUpdating } = useUpdateDocument( () => { showToast("Document Updated Successfully", "success"); closeModal(); } ); + const onSubmit = (data) => { if (ManageDoc?.document) { - const DocumentPayload = { ...DocData, ...data }; + const DocumentPayload = { + ...data, + id: DocData.id, + tags: MergedTagsWithExistenStatus(data?.tags, DocData?.tags), + }; UpdateDocument({ documentId: DocData?.id, DocumentPayload }); } else { const DocumentPayload = { ...data, entityId: Entity }; @@ -176,6 +212,8 @@ const ManageDocument = ({ closeModal, Document_Entity, Entity }) => { if (isDocLoading) return
Upload New Document
@@ -270,7 +308,7 @@ const ManageDocument = ({ closeModal, Document_Entity, Entity }) => { {/* Upload */}