Skip to content

Commit b1d30bb

Browse files
authored
Merge pull request Expensify#65869 from callstack-internal/fix/review-button
fix: Hide review button when there is no violations
2 parents 70df4b0 + 49066a3 commit b1d30bb

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

src/libs/actions/OnyxDerived/configs/reportTransactionsAndViolations.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import type {OnyxCollection} from 'react-native-onyx';
22
import createOnyxDerivedValueConfig from '@userActions/OnyxDerived/createOnyxDerivedValueConfig';
33
import ONYXKEYS from '@src/ONYXKEYS';
4-
import type {Transaction} from '@src/types/onyx';
4+
import type {Transaction, TransactionViolation} from '@src/types/onyx';
55

66
let previousTransactions: OnyxCollection<Transaction> = {};
7+
let previousViolations: OnyxCollection<TransactionViolation[]> = {};
78

89
export default createOnyxDerivedValueConfig({
910
key: ONYXKEYS.DERIVED.REPORT_TRANSACTIONS_AND_VIOLATIONS,
@@ -56,16 +57,25 @@ export default createOnyxDerivedValueConfig({
5657
}
5758

5859
const transactionID = transaction.transactionID;
59-
const transactionViolations = violations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`];
60+
const violationKey = `${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`;
61+
const transactionViolations = violations?.[violationKey];
62+
const previousTransactionViolations = previousViolations?.[violationKey];
6063

64+
const violationInSourceValues = transactionViolationsUpdates?.[violationKey];
65+
66+
// If violations exist and have length > 0, add them to the structure
6167
if (transactionViolations && transactionViolations.length > 0) {
62-
reportTransactionsAndViolations[reportID].violations[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`] = transactionViolations;
68+
reportTransactionsAndViolations[reportID].violations[violationKey] = transactionViolations;
69+
} else if (violationInSourceValues === undefined || (previousTransactionViolations && previousTransactionViolations.length > 0)) {
70+
// If violations were removed (previous had violations but current doesn't) or explicitly set to undefined, remove them from the structure
71+
delete reportTransactionsAndViolations[reportID].violations[violationKey];
6372
}
6473

6574
reportTransactionsAndViolations[reportID].transactions[transactionKey] = transaction;
6675
}
6776

6877
previousTransactions = transactions;
78+
previousViolations = violations;
6979

7080
return reportTransactionsAndViolations;
7181
},

0 commit comments

Comments
 (0)