diff --git a/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte b/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte index a381f0599b..342b7c62ef 100644 --- a/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte +++ b/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte @@ -137,8 +137,8 @@ newAttachments.add(_id) attachments = attachments saved = false - dispatch('attached', _id) saveDraft() + dispatch('attached', _id) } catch (err: any) { setPlatformStatus(unknownError(err)) } @@ -146,6 +146,7 @@ async function saveAttachment (doc: Attachment, objectId: Ref<Doc> | undefined): Promise<void> { if (space === undefined || objectId === undefined || _class === undefined) return + newAttachments.delete(doc._id) await client.addCollection(attachment.class.Attachment, space, objectId, _class, 'attachments', doc, doc._id) } @@ -172,12 +173,13 @@ async function removeAttachment (attachment: Attachment): Promise<void> { removedAttachments.add(attachment) attachments.delete(attachment._id) - dispatch('detached', attachment._id) attachments = attachments saveDraft() + dispatch('detached', attachment._id) } async function deleteAttachment (attachment: Attachment): Promise<void> { + removedAttachments.delete(attachment) if (originalAttachments.has(attachment._id)) { await client.removeCollection( attachment._class, @@ -218,6 +220,20 @@ } } + export async function saveNewAttachment (_id: Ref<Attachment>): Promise<void> { + const attachment = attachments.get(_id) + if (attachment !== undefined) { + await saveAttachment(attachment, objectId) + } + } + + export async function removeAttachmentById (_id: Ref<Attachment>): Promise<void> { + const attachment = attachments.get(_id) + if (attachment !== undefined) { + await removeAttachment(attachment) + } + } + export async function createAttachments (_id: Ref<Doc> | undefined = objectId): Promise<void> { if (saved) { return diff --git a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte index 00dffe54ce..bbef924c82 100644 --- a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte @@ -185,8 +185,8 @@ _class={tracker.class.Issue} space={issue.space} alwaysEdit - on:attached={save} - on:detached={save} + on:attached={(e) => descriptionBox.saveNewAttachment(e.detail)} + on:detached={(e) => descriptionBox.removeAttachmentById(e.detail)} showButtons on:blur={save} on:changeContent={triggerSave}