From 753f4c9a7d34c8d3329d4dc024fcf272f6f47ff3 Mon Sep 17 00:00:00 2001 From: Marcus <56945030+maspio@users.noreply.github.com> Date: Mon, 21 Nov 2022 18:26:59 +0100 Subject: [PATCH] fix(IF Node): Fix "Is Empty" and "Is Not Empty" operation fails for date objects (#4670) * IF node isEmtpy and IsNotEmpty operation: ignore empty date objects * IF node isEmtpy and IsNotEmpty operation: treat invalid dates as empty --- packages/nodes-base/nodes/If/If.node.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/nodes-base/nodes/If/If.node.ts b/packages/nodes-base/nodes/If/If.node.ts index 0047186e7..f681db6ea 100644 --- a/packages/nodes-base/nodes/If/If.node.ts +++ b/packages/nodes-base/nodes/If/If.node.ts @@ -315,6 +315,9 @@ export class If implements INodeType { let item: INodeExecutionData; let combineOperation: string; + const isDateObject = (value: NodeParameterValue) => Object.prototype.toString.call(value) === '[object Date]'; + const isDateInvalid = (value: NodeParameterValue) => value?.toString() === 'Invalid Date'; + // The compare operations const compareOperationFunctions: { [key: string]: (value1: NodeParameterValue, value2: NodeParameterValue) => boolean; @@ -347,15 +350,17 @@ export class If implements INodeType { !(value1 as string).startsWith(value2 as string), isEmpty: (value1: NodeParameterValue) => [undefined, null, '', NaN].includes(value1 as string) || - (typeof value1 === 'object' && value1 !== null + (typeof value1 === 'object' && value1 !== null && !isDateObject(value1) ? Object.entries(value1 as string).length === 0 - : false), + : false) || + (isDateObject(value1) && isDateInvalid(value1)), isNotEmpty: (value1: NodeParameterValue) => !( [undefined, null, '', NaN].includes(value1 as string) || - (typeof value1 === 'object' && value1 !== null + (typeof value1 === 'object' && value1 !== null && !isDateObject(value1) ? Object.entries(value1 as string).length === 0 - : false) + : false) || + (isDateObject(value1) && isDateInvalid(value1)) ), regex: (value1: NodeParameterValue, value2: NodeParameterValue) => { const regexMatch = (value2 || '').toString().match(new RegExp('^/(.*?)/([gimusy]*)$'));