From 02bfebccc26f7a13b11c0787bce13f4e2945e70a Mon Sep 17 00:00:00 2001 From: Abdul Rahman <81605929+abdulrahmancodes@users.noreply.github.com> Date: Thu, 19 Mar 2026 23:25:28 +0530 Subject: [PATCH] Fix: cascade delete favorite folder children on backend (#18765) --- .../navigation-menu-item.service.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/twenty-server/src/engine/metadata-modules/navigation-menu-item/navigation-menu-item.service.ts b/packages/twenty-server/src/engine/metadata-modules/navigation-menu-item/navigation-menu-item.service.ts index f47aa8686b..60664ca452 100644 --- a/packages/twenty-server/src/engine/metadata-modules/navigation-menu-item/navigation-menu-item.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/navigation-menu-item/navigation-menu-item.service.ts @@ -15,6 +15,7 @@ import { type CreateNavigationMenuItemInput } from 'src/engine/metadata-modules/ import { type NavigationMenuItemDTO } from 'src/engine/metadata-modules/navigation-menu-item/dtos/navigation-menu-item.dto'; import { RecordIdentifierDTO } from 'src/engine/metadata-modules/navigation-menu-item/dtos/record-identifier.dto'; import { type UpdateNavigationMenuItemInput } from 'src/engine/metadata-modules/navigation-menu-item/dtos/update-navigation-menu-item.input'; +import { NavigationMenuItemType } from 'src/engine/metadata-modules/navigation-menu-item/enums/navigation-menu-item-type.enum'; import { NavigationMenuItemException, NavigationMenuItemExceptionCode, @@ -336,13 +337,25 @@ export class NavigationMenuItemService { existingUserWorkspaceId: flatNavigationMenuItemToDelete.userWorkspaceId, }); + const flatEntitiesToDelete = [flatNavigationMenuItemToDelete]; + + if (flatNavigationMenuItemToDelete.type === NavigationMenuItemType.FOLDER) { + const userWorkspaceIdKey = + flatNavigationMenuItemToDelete.userWorkspaceId ?? 'null'; + const folderChildren = + existingFlatNavigationMenuItemMaps.byUserWorkspaceIdAndFolderId[ + userWorkspaceIdKey + ]?.[id] ?? []; + flatEntitiesToDelete.unshift(...folderChildren); + } + const validateAndBuildResult = await this.workspaceMigrationValidateBuildAndRunService.validateBuildAndRunWorkspaceMigration( { allFlatEntityOperationByMetadataName: { navigationMenuItem: { flatEntityToCreate: [], - flatEntityToDelete: [flatNavigationMenuItemToDelete], + flatEntityToDelete: flatEntitiesToDelete, flatEntityToUpdate: [], }, },