From 1ea6781525efb9c37eea7ea4854b1672f8978906 Mon Sep 17 00:00:00 2001 From: hurali97 Date: Fri, 16 Aug 2024 14:40:46 +0500 Subject: [PATCH] fix: right operand of in is not an object --- src/libs/EmojiUtils.ts | 2 +- src/libs/ModifiedExpenseMessage.ts | 19 ++++++++++--------- src/libs/ReportActionsUtils.ts | 2 +- src/pages/home/report/ReportActionItem.tsx | 10 ++++++---- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/libs/EmojiUtils.ts b/src/libs/EmojiUtils.ts index 22b1ee0bc010..a8958295bb96 100644 --- a/src/libs/EmojiUtils.ts +++ b/src/libs/EmojiUtils.ts @@ -226,7 +226,7 @@ function getDynamicSpacing(emojiCount: number, suffix: number): EmojiSpacer[] { function addSpacesToEmojiCategories(emojis: PickerEmojis): EmojiPickerList { let updatedEmojis: EmojiPickerList = []; emojis.forEach((emoji, index) => { - if (emoji && 'header' in emoji) { + if (emoji && typeof emoji === 'object' && 'header' in emoji) { updatedEmojis = updatedEmojis.concat(getDynamicSpacing(updatedEmojis.length, index), [emoji], getDynamicSpacing(1, index)); return; } diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts index 4a09660a7090..798bc74869e7 100644 --- a/src/libs/ModifiedExpenseMessage.ts +++ b/src/libs/ModifiedExpenseMessage.ts @@ -123,14 +123,15 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr const setFragments: string[] = []; const changeFragments: string[] = []; + const isReportActionOriginalMessageAnObject = reportActionOriginalMessage && typeof reportActionOriginalMessage === 'object'; const hasModifiedAmount = - reportActionOriginalMessage && + isReportActionOriginalMessageAnObject && 'oldAmount' in reportActionOriginalMessage && 'oldCurrency' in reportActionOriginalMessage && 'amount' in reportActionOriginalMessage && 'currency' in reportActionOriginalMessage; - const hasModifiedMerchant = reportActionOriginalMessage && 'oldMerchant' in reportActionOriginalMessage && 'merchant' in reportActionOriginalMessage; + const hasModifiedMerchant = isReportActionOriginalMessageAnObject && 'oldMerchant' in reportActionOriginalMessage && 'merchant' in reportActionOriginalMessage; if (hasModifiedAmount) { const oldCurrency = reportActionOriginalMessage?.oldCurrency; @@ -149,7 +150,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr buildMessageFragmentForValue(amount, oldAmount, Localize.translateLocal('iou.amount'), false, setFragments, removalFragments, changeFragments); } - const hasModifiedComment = reportActionOriginalMessage && 'oldComment' in reportActionOriginalMessage && 'newComment' in reportActionOriginalMessage; + const hasModifiedComment = isReportActionOriginalMessageAnObject && 'oldComment' in reportActionOriginalMessage && 'newComment' in reportActionOriginalMessage; if (hasModifiedComment) { buildMessageFragmentForValue( reportActionOriginalMessage?.newComment ?? '', @@ -188,7 +189,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr ); } - const hasModifiedCategory = reportActionOriginalMessage && 'oldCategory' in reportActionOriginalMessage && 'category' in reportActionOriginalMessage; + const hasModifiedCategory = isReportActionOriginalMessageAnObject && 'oldCategory' in reportActionOriginalMessage && 'category' in reportActionOriginalMessage; if (hasModifiedCategory) { buildMessageFragmentForValue( reportActionOriginalMessage?.category ?? '', @@ -201,7 +202,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr ); } - const hasModifiedTag = reportActionOriginalMessage && 'oldTag' in reportActionOriginalMessage && 'tag' in reportActionOriginalMessage; + const hasModifiedTag = isReportActionOriginalMessageAnObject && 'oldTag' in reportActionOriginalMessage && 'tag' in reportActionOriginalMessage; if (hasModifiedTag) { const policyTags = allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {}; const transactionTag = reportActionOriginalMessage?.tag ?? ''; @@ -232,7 +233,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr }); } - const hasModifiedTaxAmount = reportActionOriginalMessage && 'oldTaxAmount' in reportActionOriginalMessage && 'taxAmount' in reportActionOriginalMessage; + const hasModifiedTaxAmount = isReportActionOriginalMessageAnObject && 'oldTaxAmount' in reportActionOriginalMessage && 'taxAmount' in reportActionOriginalMessage; if (hasModifiedTaxAmount) { const currency = reportActionOriginalMessage?.currency; @@ -242,7 +243,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr buildMessageFragmentForValue(taxAmount, oldTaxAmount, Localize.translateLocal('iou.taxAmount'), false, setFragments, removalFragments, changeFragments); } - const hasModifiedTaxRate = reportActionOriginalMessage && 'oldTaxRate' in reportActionOriginalMessage && 'taxRate' in reportActionOriginalMessage; + const hasModifiedTaxRate = isReportActionOriginalMessageAnObject && 'oldTaxRate' in reportActionOriginalMessage && 'taxRate' in reportActionOriginalMessage; if (hasModifiedTaxRate) { buildMessageFragmentForValue( reportActionOriginalMessage?.taxRate ?? '', @@ -255,7 +256,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr ); } - const hasModifiedBillable = reportActionOriginalMessage && 'oldBillable' in reportActionOriginalMessage && 'billable' in reportActionOriginalMessage; + const hasModifiedBillable = isReportActionOriginalMessageAnObject && 'oldBillable' in reportActionOriginalMessage && 'billable' in reportActionOriginalMessage; if (hasModifiedBillable) { buildMessageFragmentForValue( reportActionOriginalMessage?.billable ?? '', @@ -268,7 +269,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr ); } - const hasModifiedReimbursable = reportActionOriginalMessage && 'oldReimbursable' in reportActionOriginalMessage && 'reimbursable' in reportActionOriginalMessage; + const hasModifiedReimbursable = isReportActionOriginalMessageAnObject && 'oldReimbursable' in reportActionOriginalMessage && 'reimbursable' in reportActionOriginalMessage; if (hasModifiedReimbursable) { buildMessageFragmentForValue( getBooleanLiteralMessage(reportActionOriginalMessage?.reimbursable, Localize.translateLocal('iou.reimbursable'), Localize.translateLocal('iou.nonReimbursable')), diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index a731fab4ae05..54564a4fe06e 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -221,7 +221,7 @@ function getWhisperedTo(reportAction: OnyxInputOrEntry): number[] return []; } - if (!Array.isArray(message) && typeof message === 'object' && 'whisperedTo' in message) { + if (message !== null && !Array.isArray(message) && typeof message === 'object' && 'whisperedTo' in message) { return message?.whisperedTo ?? []; } diff --git a/src/pages/home/report/ReportActionItem.tsx b/src/pages/home/report/ReportActionItem.tsx index 68ced63d12d0..d5876267c375 100644 --- a/src/pages/home/report/ReportActionItem.tsx +++ b/src/pages/home/report/ReportActionItem.tsx @@ -220,7 +220,9 @@ function ReportActionItem({ ); const isDeletedParentAction = ReportActionsUtils.isDeletedParentAction(action); - const prevActionResolution = usePrevious(isActionableWhisper && originalMessage && 'resolution' in originalMessage ? originalMessage?.resolution : null); + const isOriginalMessageAnObject = originalMessage && typeof originalMessage === 'object'; + const hasResolutionInOriginalMessage = isOriginalMessageAnObject && 'resolution' in originalMessage; + const prevActionResolution = usePrevious(isActionableWhisper && hasResolutionInOriginalMessage ? originalMessage?.resolution : null); // IOUDetails only exists when we are sending money const isSendingMoney = @@ -374,10 +376,10 @@ function ReportActionItem({ return; } - if (prevActionResolution !== (originalMessage && 'resolution' in originalMessage ? originalMessage.resolution : null)) { + if (prevActionResolution !== (hasResolutionInOriginalMessage ? originalMessage.resolution : null)) { reportScrollManager.scrollToIndex(index); } - }, [index, originalMessage, prevActionResolution, reportScrollManager, isActionableWhisper]); + }, [index, originalMessage, prevActionResolution, reportScrollManager, isActionableWhisper, hasResolutionInOriginalMessage]); const toggleReaction = useCallback( (emoji: Emoji) => { @@ -855,7 +857,7 @@ function ReportActionItem({ } // If action is actionable whisper and resolved by user, then we don't want to render anything - if (isActionableWhisper && (originalMessage && 'resolution' in originalMessage ? originalMessage.resolution : null)) { + if (isActionableWhisper && (hasResolutionInOriginalMessage ? originalMessage.resolution : null)) { return null; }