From 339b5eb82229d72f0db137f48e173cd42b05472c Mon Sep 17 00:00:00 2001 From: Helmi Akermi Date: Mon, 25 Nov 2024 12:26:25 +0100 Subject: [PATCH] fix: Fix featured image is deleted in case of creating new page - EXO-75508 - Meeds-io/meeds#2614 Prior to this change, when create new page from draft with featured image and try to delete the draft after saving the new page, the featured image is deleted with the draft, which shoudl not be the case when the featured image is linked to the original saved page, this due to wrong condition handling on the removeFeaturedImage function in case of draft of new page. This PR treats the case by updating the condition to not delete the featured image in case of draft of new page. --- .../wiki/service/impl/NoteServiceImpl.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/notes-service/src/main/java/org/exoplatform/wiki/service/impl/NoteServiceImpl.java b/notes-service/src/main/java/org/exoplatform/wiki/service/impl/NoteServiceImpl.java index af187b0d7..eb3648e5b 100644 --- a/notes-service/src/main/java/org/exoplatform/wiki/service/impl/NoteServiceImpl.java +++ b/notes-service/src/main/java/org/exoplatform/wiki/service/impl/NoteServiceImpl.java @@ -1711,8 +1711,8 @@ public void removeNoteFeaturedImage(Long noteId, if (isDraft) { DraftPage draftPage = getDraftNoteById(String.valueOf(noteId), identityManager.getIdentity(String.valueOf(userIdentityId)).getRemoteId()); - if (draftPage != null && draftPage.getTargetPageId() != null - && isOriginalFeaturedImage(draftPage, getNoteByIdAndLang(Long.valueOf(draftPage.getTargetPageId()), lang))) { + if (draftPage != null && (draftPage.getTargetPageId() == null + || isOriginalFeaturedImage(draftPage, getNoteByIdAndLang(Long.valueOf(draftPage.getTargetPageId()), lang)))) { removeFeaturedImageFile = false; } note = draftPage; @@ -1997,6 +1997,20 @@ private void deleteNoteMetadataProperties(Page note, String lang, String objectT lang, true, Long.parseLong(identityManager.getOrCreateUserIdentity(note.getOwner()).getId())); + } else if(note.isDraftPage()) { + // When delete a draft of non-existing page + // check if its featured image was linked to a saved page + List metadataItems = + metadataService.getMetadataItemsByMetadataNameAndTypeAndObjectAndMetadataItemProperty(NOTES_METADATA_TYPE.getName(), + NOTES_METADATA_TYPE.getName(), + NOTE_METADATA_PAGE_OBJECT_TYPE, + FEATURED_IMAGE_ID, + featuredImageId, + 0, + 0); + if (metadataItems == null || metadataItems.isEmpty()) { + fileService.deleteFile(Long.parseLong(featuredImageId)); + } } else { fileService.deleteFile(Long.parseLong(featuredImageId)); }