From 70701ef7f9daccc844165532fa69723a6fad6378 Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Thu, 10 Jul 2025 15:52:55 +0200 Subject: [PATCH 1/3] fix review button when transaction have violations --- .../configs/reportTransactionsAndViolations.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts b/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts index 25450c1805ce1..b3b5f92034564 100644 --- a/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts +++ b/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts @@ -1,9 +1,10 @@ import type {OnyxCollection} from 'react-native-onyx'; import createOnyxDerivedValueConfig from '@userActions/OnyxDerived/createOnyxDerivedValueConfig'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {Transaction} from '@src/types/onyx'; +import type {Transaction, TransactionViolation} from '@src/types/onyx'; let previousTransactions: OnyxCollection = {}; +let previousViolations: OnyxCollection = {}; export default createOnyxDerivedValueConfig({ key: ONYXKEYS.DERIVED.REPORT_TRANSACTIONS_AND_VIOLATIONS, @@ -57,15 +58,22 @@ export default createOnyxDerivedValueConfig({ const transactionID = transaction.transactionID; const transactionViolations = violations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`]; + const violationKey = `${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`; + const previousTransactionViolations = previousViolations?.[violationKey]; + // If violations exist and have length > 0, add them to the structure if (transactionViolations && transactionViolations.length > 0) { - reportTransactionsAndViolations[reportID].violations[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`] = transactionViolations; + reportTransactionsAndViolations[reportID].violations[violationKey] = transactionViolations; + } else if (previousTransactionViolations && previousTransactionViolations.length > 0) { + // If violations were removed (previous had violations but current doesn't), remove them from the structure + delete reportTransactionsAndViolations[reportID].violations[violationKey]; } reportTransactionsAndViolations[reportID].transactions[transactionKey] = transaction; } previousTransactions = transactions; + previousViolations = violations; return reportTransactionsAndViolations; }, From 29d8bc8db0d79d2c3dd391e062f6ff5caf297dc1 Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Thu, 10 Jul 2025 16:16:18 +0200 Subject: [PATCH 2/3] handle transactionViolations updated to undefined --- .../OnyxDerived/configs/reportTransactionsAndViolations.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts b/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts index b3b5f92034564..faf87cb967d42 100644 --- a/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts +++ b/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts @@ -61,11 +61,13 @@ export default createOnyxDerivedValueConfig({ const violationKey = `${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`; const previousTransactionViolations = previousViolations?.[violationKey]; + const violationInSourceValues = transactionViolationsUpdates?.[violationKey]; + // If violations exist and have length > 0, add them to the structure if (transactionViolations && transactionViolations.length > 0) { reportTransactionsAndViolations[reportID].violations[violationKey] = transactionViolations; - } else if (previousTransactionViolations && previousTransactionViolations.length > 0) { - // If violations were removed (previous had violations but current doesn't), remove them from the structure + } else if (violationInSourceValues === undefined || (previousTransactionViolations && previousTransactionViolations.length > 0)) { + // If violations were removed (previous had violations but current doesn't) or explicitly set to undefined, remove them from the structure delete reportTransactionsAndViolations[reportID].violations[violationKey]; } From 49066a3e8b7c24db6ad786e667f05f1cb8e157fb Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Thu, 10 Jul 2025 17:09:34 +0200 Subject: [PATCH 3/3] reuse violationKey --- .../OnyxDerived/configs/reportTransactionsAndViolations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts b/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts index faf87cb967d42..5f1aee7017560 100644 --- a/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts +++ b/src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts @@ -57,8 +57,8 @@ export default createOnyxDerivedValueConfig({ } const transactionID = transaction.transactionID; - const transactionViolations = violations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`]; const violationKey = `${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`; + const transactionViolations = violations?.[violationKey]; const previousTransactionViolations = previousViolations?.[violationKey]; const violationInSourceValues = transactionViolationsUpdates?.[violationKey];