From 76d39cfc84a39184363ed7c09edb0a8bb7936f8d Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Mon, 4 Aug 2025 17:29:00 +0530 Subject: [PATCH] Removed Onyx.connect from DebugUtils (part 1) --- package.json | 2 +- src/libs/DebugUtils.ts | 34 +++++------ src/pages/Debug/Report/DebugReportPage.tsx | 6 +- tests/unit/DebugUtilsTest.ts | 70 +++++++++++----------- 4 files changed, 57 insertions(+), 55 deletions(-) diff --git a/package.json b/package.json index 04d22167ebab..d9123613678b 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "test:debug": "TZ=utc NODE_OPTIONS='--inspect-brk --experimental-vm-modules' jest --runInBand", "perf-test": "NODE_OPTIONS=--experimental-vm-modules npx reassure", "typecheck": "NODE_OPTIONS=--max_old_space_size=8192 tsc", - "lint": "NODE_OPTIONS=--max_old_space_size=8192 eslint . --max-warnings=320 --cache --cache-location=node_modules/.cache/eslint", + "lint": "NODE_OPTIONS=--max_old_space_size=8192 eslint . --max-warnings=318 --cache --cache-location=node_modules/.cache/eslint", "lint-changed": "NODE_OPTIONS=--max_old_space_size=8192 ./scripts/lintChanged.sh", "lint-watch": "npx eslint-watch --watch --changed", "shellcheck": "./scripts/shellCheck.sh", diff --git a/src/libs/DebugUtils.ts b/src/libs/DebugUtils.ts index 5f4953431f54..4a911f81c260 100644 --- a/src/libs/DebugUtils.ts +++ b/src/libs/DebugUtils.ts @@ -87,14 +87,6 @@ const TRANSACTION_REQUIRED_PROPERTIES: Array = ['transactionI const TRANSACTION_VIOLATION_REQUIRED_PROPERTIES: Array = ['type', 'name'] satisfies Array; -let isInFocusMode: OnyxEntry; -Onyx.connect({ - key: ONYXKEYS.NVP_PRIORITY_MODE, - callback: (priorityMode) => { - isInFocusMode = priorityMode === CONST.PRIORITY_MODE.GSD; - }, -}); - let transactionViolations: OnyxCollection; Onyx.connect({ key: ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, @@ -104,14 +96,6 @@ Onyx.connect({ }, }); -let betas: OnyxEntry; -Onyx.connect({ - key: ONYXKEYS.BETAS, - callback: (value) => { - betas = value; - }, -}); - function stringifyJSON(data: Record) { return JSON.stringify(data, null, 6); } @@ -1329,7 +1313,21 @@ function validateTransactionViolationJSON(json: string) { /** * Gets the reason for showing LHN row */ -function getReasonForShowingRowInLHN(report: OnyxEntry, chatReport: OnyxEntry, hasRBR = false, isReportArchived = false): TranslationPaths | null { +function getReasonForShowingRowInLHN({ + report, + chatReport, + hasRBR = false, + isReportArchived = false, + isInFocusMode = false, + betas = undefined, +}: { + report: OnyxEntry; + chatReport: OnyxEntry; + hasRBR?: boolean; + isReportArchived?: boolean; + isInFocusMode?: boolean; + betas?: OnyxEntry; +}): TranslationPaths | null { if (!report) { return null; } @@ -1341,7 +1339,7 @@ function getReasonForShowingRowInLHN(report: OnyxEntry, chatReport: Onyx chatReport, // We can't pass report.reportID because it will cause reason to always be isFocused currentReportId: '-1', - isInFocusMode: !!isInFocusMode, + isInFocusMode, betas, excludeEmptyChats: true, doesReportHaveViolations, diff --git a/src/pages/Debug/Report/DebugReportPage.tsx b/src/pages/Debug/Report/DebugReportPage.tsx index e1db093fac0a..6e151d112a5e 100644 --- a/src/pages/Debug/Report/DebugReportPage.tsx +++ b/src/pages/Debug/Report/DebugReportPage.tsx @@ -60,6 +60,8 @@ function DebugReportPage({ selector: (attributes) => attributes?.reports?.[reportID], canBeMissing: true, }); + const [priorityMode] = useOnyx(ONYXKEYS.NVP_PRIORITY_MODE, {canBeMissing: true}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); const transactionID = DebugUtils.getTransactionID(report, reportActions); const isReportArchived = useReportIsArchived(reportID); @@ -76,7 +78,7 @@ function DebugReportPage({ DebugUtils.getReasonAndReportActionForRBRInLHNRow(report, chatReport, reportActions, transactions, hasViolations, reportAttributes?.reportErrors ?? {}, isReportArchived) ?? {}; const hasRBR = !!reasonRBR; const hasGBR = !hasRBR && !!reasonGBR; - const reasonLHN = DebugUtils.getReasonForShowingRowInLHN(report, chatReport, hasRBR, isReportArchived); + const reasonLHN = DebugUtils.getReasonForShowingRowInLHN({report, chatReport, betas, hasRBR, isReportArchived, isInFocusMode: priorityMode === CONST.PRIORITY_MODE.GSD}); return [ { @@ -121,7 +123,7 @@ function DebugReportPage({ : undefined, }, ]; - }, [chatReport, report, transactionViolations, reportID, reportActions, transactions, reportAttributes?.reportErrors, isReportArchived, translate]); + }, [report, transactionViolations, reportID, isReportArchived, chatReport, reportActions, transactions, reportAttributes?.reportErrors, betas, priorityMode, translate]); const DebugDetailsTab = useCallback( () => ( diff --git a/tests/unit/DebugUtilsTest.ts b/tests/unit/DebugUtilsTest.ts index b734111741c7..d9a3555c8886 100644 --- a/tests/unit/DebugUtilsTest.ts +++ b/tests/unit/DebugUtilsTest.ts @@ -735,38 +735,38 @@ describe('DebugUtils', () => { Onyx.clear(); }); it('returns null when report is not defined', () => { - const reason = DebugUtils.getReasonForShowingRowInLHN(undefined, chatReportR14932); + const reason = DebugUtils.getReasonForShowingRowInLHN({report: undefined, chatReport: chatReportR14932}); expect(reason).toBeNull(); }); it('returns correct reason when report has a valid draft comment', async () => { await Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT}1`, 'Hello world!'); - const reason = DebugUtils.getReasonForShowingRowInLHN(baseReport, chatReportR14932); + const reason = DebugUtils.getReasonForShowingRowInLHN({report: baseReport, chatReport: chatReportR14932}); expect(reason).toBe('debug.reasonVisibleInLHN.hasDraftComment'); }); it('returns correct reason when report has GBR', () => { - const reason = DebugUtils.getReasonForShowingRowInLHN( - { + const reason = DebugUtils.getReasonForShowingRowInLHN({ + report: { ...baseReport, lastMentionedTime: '2024-08-10 18:70:44.171', lastReadTime: '2024-08-08 18:70:44.171', }, - chatReportR14932, - ); + chatReport: chatReportR14932, + }); expect(reason).toBe('debug.reasonVisibleInLHN.hasGBR'); }); it('returns correct reason when report is pinned', () => { - const reason = DebugUtils.getReasonForShowingRowInLHN( - { + const reason = DebugUtils.getReasonForShowingRowInLHN({ + report: { ...baseReport, isPinned: true, }, - chatReportR14932, - ); + chatReport: chatReportR14932, + }); expect(reason).toBe('debug.reasonVisibleInLHN.pinnedByUser'); }); it('returns correct reason when report has add workspace room errors', () => { - const reason = DebugUtils.getReasonForShowingRowInLHN( - { + const reason = DebugUtils.getReasonForShowingRowInLHN({ + report: { ...baseReport, errorFields: { addWorkspaceRoom: { @@ -774,17 +774,16 @@ describe('DebugUtils', () => { }, }, }, - chatReportR14932, - ); + chatReport: chatReportR14932, + }); expect(reason).toBe('debug.reasonVisibleInLHN.hasAddWorkspaceRoomErrors'); }); it('returns correct reason when report is unread', async () => { - await Onyx.set(ONYXKEYS.NVP_PRIORITY_MODE, CONST.PRIORITY_MODE.GSD); await Onyx.set(ONYXKEYS.SESSION, { accountID: 1234, }); - const reason = DebugUtils.getReasonForShowingRowInLHN( - { + const reason = DebugUtils.getReasonForShowingRowInLHN({ + report: { ...baseReport, participants: { // eslint-disable-next-line @typescript-eslint/naming-convention @@ -796,39 +795,42 @@ describe('DebugUtils', () => { lastReadTime: '2024-08-08 18:70:44.171', lastMessageText: 'Hello world!', }, - chatReportR14932, - ); + chatReport: chatReportR14932, + isInFocusMode: true, + }); expect(reason).toBe('debug.reasonVisibleInLHN.isUnread'); }); it('returns correct reason when report is archived', async () => { const reportNameValuePairs = { private_isArchived: DateUtils.getDBTime(), }; - await Onyx.set(ONYXKEYS.NVP_PRIORITY_MODE, CONST.PRIORITY_MODE.DEFAULT); await Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${baseReport.reportID}`, reportNameValuePairs); const {result: isReportArchived} = renderHook(() => useReportIsArchived(baseReport?.reportID)); - const reason = DebugUtils.getReasonForShowingRowInLHN( - { + const reason = DebugUtils.getReasonForShowingRowInLHN({ + report: { ...baseReport, }, - chatReportR14932, - false, - isReportArchived.current, - ); + chatReport: chatReportR14932, + hasRBR: false, + isReportArchived: isReportArchived.current, + }); expect(reason).toBe('debug.reasonVisibleInLHN.isArchived'); }); it('returns correct reason when report is self DM', () => { - const reason = DebugUtils.getReasonForShowingRowInLHN( - { + const reason = DebugUtils.getReasonForShowingRowInLHN({ + report: { ...baseReport, chatType: CONST.REPORT.CHAT_TYPE.SELF_DM, }, - chatReportR14932, - ); + chatReport: chatReportR14932, + }); expect(reason).toBe('debug.reasonVisibleInLHN.isSelfDM'); }); it('returns correct reason when report is temporarily focused', () => { - const reason = DebugUtils.getReasonForShowingRowInLHN(baseReport, chatReportR14932); + const reason = DebugUtils.getReasonForShowingRowInLHN({ + report: baseReport, + chatReport: chatReportR14932, + }); expect(reason).toBe('debug.reasonVisibleInLHN.isFocused'); }); it('returns correct reason when report has one transaction thread with violations', async () => { @@ -886,7 +888,7 @@ describe('DebugUtils', () => { }, ], }); - const reason = DebugUtils.getReasonForShowingRowInLHN(MOCK_TRANSACTION_REPORT, chatReportR14932, true); + const reason = DebugUtils.getReasonForShowingRowInLHN({report: MOCK_TRANSACTION_REPORT, chatReport: chatReportR14932, hasRBR: true}); expect(reason).toBe('debug.reasonVisibleInLHN.hasRBR'); }); it('returns correct reason when report has violations', async () => { @@ -944,11 +946,11 @@ describe('DebugUtils', () => { }, ], }); - const reason = DebugUtils.getReasonForShowingRowInLHN(MOCK_EXPENSE_REPORT, chatReportR14932, true); + const reason = DebugUtils.getReasonForShowingRowInLHN({report: MOCK_EXPENSE_REPORT, chatReport: chatReportR14932, hasRBR: true}); expect(reason).toBe('debug.reasonVisibleInLHN.hasRBR'); }); it('returns correct reason when report has errors', () => { - const reason = DebugUtils.getReasonForShowingRowInLHN(baseReport, chatReportR14932, true); + const reason = DebugUtils.getReasonForShowingRowInLHN({report: baseReport, chatReport: chatReportR14932, hasRBR: true}); expect(reason).toBe('debug.reasonVisibleInLHN.hasRBR'); }); });