From cae7be423a3aa6e7636c794e803d91da5cbd0c4d Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Thu, 11 Apr 2024 17:01:47 +0200 Subject: [PATCH] :bug: (condition) Improve contains/not contains on list input Closes #1430 --- .../blocks/logic/condition/executeCondition.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/bot-engine/blocks/logic/condition/executeCondition.ts b/packages/bot-engine/blocks/logic/condition/executeCondition.ts index 91de441ef..a1e87bea6 100644 --- a/packages/bot-engine/blocks/logic/condition/executeCondition.ts +++ b/packages/bot-engine/blocks/logic/condition/executeCondition.ts @@ -32,6 +32,14 @@ const executeComparison = if (isNotDefined(comparison.comparisonOperator)) return false switch (comparison.comparisonOperator) { case ComparisonOperators.CONTAINS: { + if (Array.isArray(inputValue)) { + const equal = (a: string | null, b: string | null) => { + if (typeof a === 'string' && typeof b === 'string') + return a.normalize() === b.normalize() + return a !== b + } + return compare(equal, inputValue, value, 'some') + } const contains = (a: string | null, b: string | null) => { if (b === '' || !b || !a) return false return a @@ -43,6 +51,14 @@ const executeComparison = return compare(contains, inputValue, value, 'some') } case ComparisonOperators.NOT_CONTAINS: { + if (Array.isArray(inputValue)) { + const notEqual = (a: string | null, b: string | null) => { + if (typeof a === 'string' && typeof b === 'string') + return a.normalize() !== b.normalize() + return a !== b + } + return compare(notEqual, inputValue, value, 'some') + } const notContains = (a: string | null, b: string | null) => { if (b === '' || !b || !a) return true return !a