From f426025fd51e5644ee3be1880f59cbf553305cf3 Mon Sep 17 00:00:00 2001 From: = Date: Thu, 30 May 2024 11:25:33 +0530 Subject: [PATCH] fix: resolved approval failing when secret was missing in board --- .../secret-replication-service.ts | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/backend/src/ee/services/secret-replication/secret-replication-service.ts b/backend/src/ee/services/secret-replication/secret-replication-service.ts index a8296536a..83a846233 100644 --- a/backend/src/ee/services/secret-replication/secret-replication-service.ts +++ b/backend/src/ee/services/secret-replication/secret-replication-service.ts @@ -139,18 +139,25 @@ export const secretReplicationServiceFactory = ({ }); const localSecretsGroupedByBlindIndex = groupBy(localSecrets, (i) => i.secretBlindIndex as string); - const locallyCreatedSecrets = sanitizedSecrets.filter(({ operation, id }) => { - return ( - (operation === SecretOperations.Create || operation === SecretOperations.Update) && - !localSecretsGroupedByBlindIndex[replicatedSecretsGroupBySecretId[id][0].secretBlindIndex as string]?.[0] - ); - }); + const locallyCreatedSecrets = sanitizedSecrets + .filter( + ({ operation, id }) => + // upsert: irrespective of create or update its a create if not found in dashboard + (operation === SecretOperations.Create || operation === SecretOperations.Update) && + !localSecretsGroupedByBlindIndex[ + replicatedSecretsGroupBySecretId[id][0].secretBlindIndex as string + ]?.[0] + ) + .map((el) => ({ ...el, operation: SecretOperations.Create })); // rewrite update ops to create - const locallyUpdatedSecrets = sanitizedSecrets.filter( - ({ operation, id }) => - (operation === SecretOperations.Create || operation === SecretOperations.Update) && - localSecretsGroupedByBlindIndex[replicatedSecretsGroupBySecretId[id][0].secretBlindIndex as string]?.[0] - ); + const locallyUpdatedSecrets = sanitizedSecrets + .filter( + ({ operation, id }) => + // upsert: irrespective of create or update its an update if not found in dashboard + (operation === SecretOperations.Create || operation === SecretOperations.Update) && + localSecretsGroupedByBlindIndex[replicatedSecretsGroupBySecretId[id][0].secretBlindIndex as string]?.[0] + ) + .map((el) => ({ ...el, operation: SecretOperations.Update })); // rewrite create ops to update const locallyDeletedSecrets = sanitizedSecrets.filter( ({ operation, id }) => @@ -196,6 +203,7 @@ export const secretReplicationServiceFactory = ({ .map(({ id, operation }) => { const doc = replicatedSecretsGroupBySecretId[id][0]; const localSecret = localSecretsGroupedByBlindIndex[doc.secretBlindIndex as string]?.[0]; + return { op: operation, keyEncoding: doc.keyEncoding,