Skip to content

Commit ea13761

Browse files
authored
Merge pull request #47558 from callstack-internal/hur/fix-46115
fix: right operand of in is not an object
2 parents 1a8e6c4 + 1ea6781 commit ea13761

File tree

4 files changed

+18
-15
lines changed

4 files changed

+18
-15
lines changed

src/libs/EmojiUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ function getDynamicSpacing(emojiCount: number, suffix: number): EmojiSpacer[] {
226226
function addSpacesToEmojiCategories(emojis: PickerEmojis): EmojiPickerList {
227227
let updatedEmojis: EmojiPickerList = [];
228228
emojis.forEach((emoji, index) => {
229-
if (emoji && 'header' in emoji) {
229+
if (emoji && typeof emoji === 'object' && 'header' in emoji) {
230230
updatedEmojis = updatedEmojis.concat(getDynamicSpacing(updatedEmojis.length, index), [emoji], getDynamicSpacing(1, index));
231231
return;
232232
}

src/libs/ModifiedExpenseMessage.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,15 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
123123
const setFragments: string[] = [];
124124
const changeFragments: string[] = [];
125125

126+
const isReportActionOriginalMessageAnObject = reportActionOriginalMessage && typeof reportActionOriginalMessage === 'object';
126127
const hasModifiedAmount =
127-
reportActionOriginalMessage &&
128+
isReportActionOriginalMessageAnObject &&
128129
'oldAmount' in reportActionOriginalMessage &&
129130
'oldCurrency' in reportActionOriginalMessage &&
130131
'amount' in reportActionOriginalMessage &&
131132
'currency' in reportActionOriginalMessage;
132133

133-
const hasModifiedMerchant = reportActionOriginalMessage && 'oldMerchant' in reportActionOriginalMessage && 'merchant' in reportActionOriginalMessage;
134+
const hasModifiedMerchant = isReportActionOriginalMessageAnObject && 'oldMerchant' in reportActionOriginalMessage && 'merchant' in reportActionOriginalMessage;
134135

135136
if (hasModifiedAmount) {
136137
const oldCurrency = reportActionOriginalMessage?.oldCurrency;
@@ -149,7 +150,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
149150
buildMessageFragmentForValue(amount, oldAmount, Localize.translateLocal('iou.amount'), false, setFragments, removalFragments, changeFragments);
150151
}
151152

152-
const hasModifiedComment = reportActionOriginalMessage && 'oldComment' in reportActionOriginalMessage && 'newComment' in reportActionOriginalMessage;
153+
const hasModifiedComment = isReportActionOriginalMessageAnObject && 'oldComment' in reportActionOriginalMessage && 'newComment' in reportActionOriginalMessage;
153154
if (hasModifiedComment) {
154155
buildMessageFragmentForValue(
155156
reportActionOriginalMessage?.newComment ?? '',
@@ -188,7 +189,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
188189
);
189190
}
190191

191-
const hasModifiedCategory = reportActionOriginalMessage && 'oldCategory' in reportActionOriginalMessage && 'category' in reportActionOriginalMessage;
192+
const hasModifiedCategory = isReportActionOriginalMessageAnObject && 'oldCategory' in reportActionOriginalMessage && 'category' in reportActionOriginalMessage;
192193
if (hasModifiedCategory) {
193194
buildMessageFragmentForValue(
194195
reportActionOriginalMessage?.category ?? '',
@@ -201,7 +202,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
201202
);
202203
}
203204

204-
const hasModifiedTag = reportActionOriginalMessage && 'oldTag' in reportActionOriginalMessage && 'tag' in reportActionOriginalMessage;
205+
const hasModifiedTag = isReportActionOriginalMessageAnObject && 'oldTag' in reportActionOriginalMessage && 'tag' in reportActionOriginalMessage;
205206
if (hasModifiedTag) {
206207
const policyTags = allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {};
207208
const transactionTag = reportActionOriginalMessage?.tag ?? '';
@@ -232,7 +233,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
232233
});
233234
}
234235

235-
const hasModifiedTaxAmount = reportActionOriginalMessage && 'oldTaxAmount' in reportActionOriginalMessage && 'taxAmount' in reportActionOriginalMessage;
236+
const hasModifiedTaxAmount = isReportActionOriginalMessageAnObject && 'oldTaxAmount' in reportActionOriginalMessage && 'taxAmount' in reportActionOriginalMessage;
236237
if (hasModifiedTaxAmount) {
237238
const currency = reportActionOriginalMessage?.currency;
238239

@@ -242,7 +243,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
242243
buildMessageFragmentForValue(taxAmount, oldTaxAmount, Localize.translateLocal('iou.taxAmount'), false, setFragments, removalFragments, changeFragments);
243244
}
244245

245-
const hasModifiedTaxRate = reportActionOriginalMessage && 'oldTaxRate' in reportActionOriginalMessage && 'taxRate' in reportActionOriginalMessage;
246+
const hasModifiedTaxRate = isReportActionOriginalMessageAnObject && 'oldTaxRate' in reportActionOriginalMessage && 'taxRate' in reportActionOriginalMessage;
246247
if (hasModifiedTaxRate) {
247248
buildMessageFragmentForValue(
248249
reportActionOriginalMessage?.taxRate ?? '',
@@ -255,7 +256,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
255256
);
256257
}
257258

258-
const hasModifiedBillable = reportActionOriginalMessage && 'oldBillable' in reportActionOriginalMessage && 'billable' in reportActionOriginalMessage;
259+
const hasModifiedBillable = isReportActionOriginalMessageAnObject && 'oldBillable' in reportActionOriginalMessage && 'billable' in reportActionOriginalMessage;
259260
if (hasModifiedBillable) {
260261
buildMessageFragmentForValue(
261262
reportActionOriginalMessage?.billable ?? '',
@@ -268,7 +269,7 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr
268269
);
269270
}
270271

271-
const hasModifiedReimbursable = reportActionOriginalMessage && 'oldReimbursable' in reportActionOriginalMessage && 'reimbursable' in reportActionOriginalMessage;
272+
const hasModifiedReimbursable = isReportActionOriginalMessageAnObject && 'oldReimbursable' in reportActionOriginalMessage && 'reimbursable' in reportActionOriginalMessage;
272273
if (hasModifiedReimbursable) {
273274
buildMessageFragmentForValue(
274275
getBooleanLiteralMessage(reportActionOriginalMessage?.reimbursable, Localize.translateLocal('iou.reimbursable'), Localize.translateLocal('iou.nonReimbursable')),

src/libs/ReportActionsUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ function getWhisperedTo(reportAction: OnyxInputOrEntry<ReportAction>): number[]
221221
return [];
222222
}
223223

224-
if (!Array.isArray(message) && typeof message === 'object' && 'whisperedTo' in message) {
224+
if (message !== null && !Array.isArray(message) && typeof message === 'object' && 'whisperedTo' in message) {
225225
return message?.whisperedTo ?? [];
226226
}
227227

src/pages/home/report/ReportActionItem.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,9 @@ function ReportActionItem({
221221
);
222222

223223
const isDeletedParentAction = ReportActionsUtils.isDeletedParentAction(action);
224-
const prevActionResolution = usePrevious(isActionableWhisper && originalMessage && 'resolution' in originalMessage ? originalMessage?.resolution : null);
224+
const isOriginalMessageAnObject = originalMessage && typeof originalMessage === 'object';
225+
const hasResolutionInOriginalMessage = isOriginalMessageAnObject && 'resolution' in originalMessage;
226+
const prevActionResolution = usePrevious(isActionableWhisper && hasResolutionInOriginalMessage ? originalMessage?.resolution : null);
225227

226228
// IOUDetails only exists when we are sending money
227229
const isSendingMoney =
@@ -375,10 +377,10 @@ function ReportActionItem({
375377
return;
376378
}
377379

378-
if (prevActionResolution !== (originalMessage && 'resolution' in originalMessage ? originalMessage.resolution : null)) {
380+
if (prevActionResolution !== (hasResolutionInOriginalMessage ? originalMessage.resolution : null)) {
379381
reportScrollManager.scrollToIndex(index);
380382
}
381-
}, [index, originalMessage, prevActionResolution, reportScrollManager, isActionableWhisper]);
383+
}, [index, originalMessage, prevActionResolution, reportScrollManager, isActionableWhisper, hasResolutionInOriginalMessage]);
382384

383385
const toggleReaction = useCallback(
384386
(emoji: Emoji) => {
@@ -860,7 +862,7 @@ function ReportActionItem({
860862
}
861863

862864
// If action is actionable whisper and resolved by user, then we don't want to render anything
863-
if (isActionableWhisper && (originalMessage && 'resolution' in originalMessage ? originalMessage.resolution : null)) {
865+
if (isActionableWhisper && (hasResolutionInOriginalMessage ? originalMessage.resolution : null)) {
864866
return null;
865867
}
866868

0 commit comments

Comments
 (0)