From 548356aaeef71a87920b50e88cf60f85e2fe5b74 Mon Sep 17 00:00:00 2001 From: Mohammad Luthfi Fathur Rahman Date: Sat, 7 Jun 2025 19:04:00 +0700 Subject: [PATCH 1/5] using get collection data instead of key preventing stale data --- src/hooks/useTransactionViolations.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/hooks/useTransactionViolations.ts b/src/hooks/useTransactionViolations.ts index 6d856261201b..348a2e00af4c 100644 --- a/src/hooks/useTransactionViolations.ts +++ b/src/hooks/useTransactionViolations.ts @@ -6,7 +6,12 @@ import type {TransactionViolations} from '@src/types/onyx'; function useTransactionViolations(transactionID?: string): TransactionViolations { const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`); - const [transactionViolations = []] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`); + const [allViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); + + const transactionViolations = useMemo(() => { + return allViolations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`] ?? []; + }, [allViolations, transactionID]); + return useMemo(() => transactionViolations.filter((violation) => !isViolationDismissed(transaction, violation)), [transaction, transactionViolations]); } From 7010d78567a353020e8ad2c40f48c9f6a60de579 Mon Sep 17 00:00:00 2001 From: Mohammad Luthfi Fathur Rahman Date: Mon, 9 Jun 2025 10:41:50 +0700 Subject: [PATCH 2/5] fix eslint --- src/hooks/useTransactionViolations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useTransactionViolations.ts b/src/hooks/useTransactionViolations.ts index 348a2e00af4c..f78b65551cf0 100644 --- a/src/hooks/useTransactionViolations.ts +++ b/src/hooks/useTransactionViolations.ts @@ -5,7 +5,7 @@ import ONYXKEYS from '@src/ONYXKEYS'; import type {TransactionViolations} from '@src/types/onyx'; function useTransactionViolations(transactionID?: string): TransactionViolations { - const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`); + const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {canBeMissing: true}); const [allViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); const transactionViolations = useMemo(() => { From e321238ea5130b4f42f36b74875eabc7b93bbac6 Mon Sep 17 00:00:00 2001 From: Mohammad Luthfi Fathur Rahman Date: Wed, 11 Jun 2025 22:57:51 +0700 Subject: [PATCH 3/5] revert changes --- src/hooks/useTransactionViolations.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/hooks/useTransactionViolations.ts b/src/hooks/useTransactionViolations.ts index f78b65551cf0..2e847b52a0a9 100644 --- a/src/hooks/useTransactionViolations.ts +++ b/src/hooks/useTransactionViolations.ts @@ -5,12 +5,8 @@ import ONYXKEYS from '@src/ONYXKEYS'; import type {TransactionViolations} from '@src/types/onyx'; function useTransactionViolations(transactionID?: string): TransactionViolations { - const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {canBeMissing: true}); - const [allViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); - - const transactionViolations = useMemo(() => { - return allViolations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`] ?? []; - }, [allViolations, transactionID]); + const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`); + const [transactionViolations = []] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`); return useMemo(() => transactionViolations.filter((violation) => !isViolationDismissed(transaction, violation)), [transaction, transactionViolations]); } From 82be18a44f60304f72bc3a702ee9474a5073efb1 Mon Sep 17 00:00:00 2001 From: Mohammad Luthfi Fathur Rahman Date: Wed, 11 Jun 2025 23:09:19 +0700 Subject: [PATCH 4/5] use custom wrapper for useOnyx --- src/hooks/useTransactionViolations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useTransactionViolations.ts b/src/hooks/useTransactionViolations.ts index 2e847b52a0a9..4e845944b4d4 100644 --- a/src/hooks/useTransactionViolations.ts +++ b/src/hooks/useTransactionViolations.ts @@ -1,8 +1,8 @@ import {useMemo} from 'react'; -import {useOnyx} from 'react-native-onyx'; import {isViolationDismissed} from '@libs/TransactionUtils'; import ONYXKEYS from '@src/ONYXKEYS'; import type {TransactionViolations} from '@src/types/onyx'; +import useOnyx from './useOnyx'; function useTransactionViolations(transactionID?: string): TransactionViolations { const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`); From bd18c088b527a3ad8dfacaa7bc155f1922bb0075 Mon Sep 17 00:00:00 2001 From: Mohammad Luthfi Fathur Rahman Date: Wed, 18 Jun 2025 11:21:44 +0700 Subject: [PATCH 5/5] fix check failure --- src/hooks/useTransactionViolations.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/hooks/useTransactionViolations.ts b/src/hooks/useTransactionViolations.ts index 4e845944b4d4..2596046763e2 100644 --- a/src/hooks/useTransactionViolations.ts +++ b/src/hooks/useTransactionViolations.ts @@ -5,8 +5,12 @@ import type {TransactionViolations} from '@src/types/onyx'; import useOnyx from './useOnyx'; function useTransactionViolations(transactionID?: string): TransactionViolations { - const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`); - const [transactionViolations = []] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`); + const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, { + canBeMissing: true, + }); + const [transactionViolations = []] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`, { + canBeMissing: true, + }); return useMemo(() => transactionViolations.filter((violation) => !isViolationDismissed(transaction, violation)), [transaction, transactionViolations]); }