From b5e377296abb839997b509416fef3d18c59bfee2 Mon Sep 17 00:00:00 2001 From: Sai Nikhil Date: Tue, 10 Sep 2024 16:22:33 +0530 Subject: [PATCH] fix: Can't enable a partition key after disable it (#4507) this PR can fix the issue with #4487 ## Summary by CodeRabbit - **New Features** - Enhanced logic for filtering keys in the stream comparison, allowing for more nuanced handling of disabled items. - **Bug Fixes** - Improved management of the `remove` array to ensure proper retention of items based on their presence in the `add` array. --- web/src/composables/useStreams.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/web/src/composables/useStreams.ts b/web/src/composables/useStreams.ts index 7d6fe88ddc..7d07575903 100644 --- a/web/src/composables/useStreams.ts +++ b/web/src/composables/useStreams.ts @@ -453,8 +453,8 @@ const useStreams = () => { return objA === objB; } - const keysA = Object.keys(objA).filter((key: string) => key !== "disabled"); - const keysB = Object.keys(objB).filter((key: string) => key !== "disabled"); + const keysA = Object.keys(objA) + const keysB = Object.keys(objB) if (keysA.length !== keysB.length) return false; @@ -517,8 +517,13 @@ const useStreams = () => { const result: any = compareArrays(previousArray, currentArray); add = result.add; remove = result.remove; - - remove = remove.filter((item: any) => item.disabled !== true); + remove = remove.filter((item: any) => { + const isInAdd = add.some((addItem: any) => addItem.field === item.field); + + // Only keep in `remove` if not in `add` and `disabled` is false + return !isInAdd && item.disabled === false; + }); + } else { // For other attributes, do a simple array comparison add = currentArray.filter((item: any) => !previousArray.includes(item));