Skip to content

Commit e112657

Browse files
committed
Merge branch 'main' into refactor-split-transaction-update
# Conflicts: # src/libs/actions/IOU/Split.ts
2 parents e62b9bc + 78a08f1 commit e112657

14 files changed

Lines changed: 399 additions & 47 deletions

src/components/ApprovalWorkflowSection.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {Str} from 'expensify-common';
22
import React from 'react';
33
import {View} from 'react-native';
4+
import {useCurrencyListActions} from '@hooks/useCurrencyList';
45
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
56
import useLocalize from '@hooks/useLocalize';
67
import usePersonalDetailsByEmail from '@hooks/usePersonalDetailsByEmail';
@@ -34,6 +35,7 @@ function ApprovalWorkflowSection({approvalWorkflow, onPress, currency = CONST.CU
3435
const styles = useThemeStyles();
3536
const theme = useTheme();
3637
const {translate, toLocaleOrdinal, localeCompare} = useLocalize();
38+
const {convertToDisplayString} = useCurrencyListActions();
3739
const {shouldUseNarrowLayout} = useResponsiveLayout();
3840
const personalDetailsByEmail = usePersonalDetailsByEmail();
3941

@@ -130,7 +132,7 @@ function ApprovalWorkflowSection({approvalWorkflow, onPress, currency = CONST.CU
130132
/>
131133
</View>
132134
}
133-
helperText={getApprovalLimitDescription({approver, currency, translate, personalDetailsByEmail})}
135+
helperText={getApprovalLimitDescription({approver, currency, translate, convertToDisplayString, personalDetailsByEmail})}
134136
helperTextStyle={styles.workflowApprovalLimitText}
135137
sentryLabel={CONST.SENTRY_LABEL.WORKSPACE.WORKFLOWS.APPROVAL_SECTION_APPROVER}
136138
/>

src/libs/MergeTransactionUtils.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import ONYXKEYS from '@src/ONYXKEYS';
99
import type {MergeTransaction, Policy, Report, SearchResults, Transaction} from '@src/types/onyx';
1010
import type {Attendee} from '@src/types/onyx/IOU';
1111
import SafeString from '@src/utils/SafeString';
12-
import {convertToBackendAmount, convertToDisplayString} from './CurrencyUtils';
12+
import {convertToBackendAmount} from './CurrencyUtils';
1313
import Parser from './Parser';
1414
import {getCommaSeparatedTagNameWithSanitizedColons} from './PolicyUtils';
1515
import {constructReceiptSourceFromFilename} from './ReceiptUtils';
@@ -503,6 +503,7 @@ function getDisplayValue(
503503
transaction: Transaction,
504504
policy: Policy | undefined,
505505
translate: LocaleContextProps['translate'],
506+
convertToDisplayString: CurrencyListActionsContextType['convertToDisplayString'],
506507
localeCompare: LocaleContextProps['localeCompare'],
507508
reports?: Array<OnyxEntry<Report>>,
508509
): string {
@@ -561,6 +562,7 @@ function buildMergeFieldsData(
561562
targetTransactionPolicy: Policy | undefined,
562563
sourceTransactionPolicy: Policy | undefined,
563564
translate: LocaleContextProps['translate'],
565+
convertToDisplayString: CurrencyListActionsContextType['convertToDisplayString'],
564566
localeCompare: LocaleContextProps['localeCompare'],
565567
reports: Array<OnyxEntry<Report>> = [],
566568
): MergeFieldData[] {
@@ -576,12 +578,12 @@ function buildMergeFieldsData(
576578
const options: MergeFieldOption[] = [
577579
{
578580
transaction: targetTransaction,
579-
displayValue: getDisplayValue(field, targetTransaction, targetTransactionPolicy, translate, localeCompare, reports),
581+
displayValue: getDisplayValue(field, targetTransaction, targetTransactionPolicy, translate, convertToDisplayString, localeCompare, reports),
580582
isSelected: selectedTransactionId === targetTransaction.transactionID,
581583
},
582584
{
583585
transaction: sourceTransaction,
584-
displayValue: getDisplayValue(field, sourceTransaction, sourceTransactionPolicy, translate, localeCompare, reports),
586+
displayValue: getDisplayValue(field, sourceTransaction, sourceTransactionPolicy, translate, convertToDisplayString, localeCompare, reports),
585587
isSelected: selectedTransactionId === sourceTransaction.transactionID,
586588
},
587589
];

src/libs/WorkflowUtils.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Str} from 'expensify-common';
22
import type {OnyxEntry} from 'react-native-onyx';
33
import type {ValueOf} from 'type-fest';
44
import type {LocaleContextProps} from '@components/LocaleContextProvider';
5+
import type {CurrencyListActionsContextType} from '@hooks/useCurrencyList';
56
import CONST from '@src/CONST';
67
import type {BankAccountList} from '@src/types/onyx';
78
import type {ApprovalWorkflowOnyx, Approver, Member} from '@src/types/onyx/ApprovalWorkflow';
@@ -12,7 +13,6 @@ import type Policy from '@src/types/onyx/Policy';
1213
import type PolicyEmployee from '@src/types/onyx/PolicyEmployee';
1314
import type {PolicyEmployeeList} from '@src/types/onyx/PolicyEmployee';
1415
import {isBankAccountPartiallySetup} from './BankAccountUtils';
15-
import {convertToDisplayString} from './CurrencyUtils';
1616
import {getDefaultApprover, isExpensifyTeam, shouldFilterExpensifyTeam} from './PolicyUtils';
1717

1818
const INITIAL_APPROVAL_WORKFLOW: ApprovalWorkflowOnyx = {
@@ -627,13 +627,14 @@ type GetApprovalLimitDescriptionParams = {
627627
approver: Approver | undefined;
628628
currency: string;
629629
translate: LocaleContextProps['translate'];
630+
convertToDisplayString: CurrencyListActionsContextType['convertToDisplayString'];
630631
personalDetailsByEmail: PersonalDetailsList | undefined;
631632
};
632633

633634
/**
634635
* Get the approval limit description for an approver (e.g., "Reports above $1,000 forward to John Doe")
635636
*/
636-
function getApprovalLimitDescription({approver, currency, translate, personalDetailsByEmail}: GetApprovalLimitDescriptionParams): string | undefined {
637+
function getApprovalLimitDescription({approver, currency, translate, convertToDisplayString, personalDetailsByEmail}: GetApprovalLimitDescriptionParams): string | undefined {
637638
if (approver?.approvalLimit == null || !approver?.overLimitForwardsTo) {
638639
return undefined;
639640
}

src/libs/WorkspacesSettingsUtils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import type {OnyxEntry} from 'react-native-onyx';
22
import type {ValueOf} from 'type-fest';
33
import type {LocaleContextProps} from '@components/LocaleContextProvider';
4+
import type {CurrencyListActionsContextType} from '@hooks/useCurrencyList';
45
import CONST from '@src/CONST';
56
import type {TranslationPaths} from '@src/languages/types';
67
import type {Policy, ReportAttributesDerivedValue} from '@src/types/onyx';
78
import type {CompanyAddress, Unit} from '@src/types/onyx/Policy';
8-
import {convertToDisplayString} from './CurrencyUtils';
99

1010
type BrickRoad = ValueOf<typeof CONST.BRICK_ROAD_INDICATOR_STATUS> | undefined;
1111

@@ -82,6 +82,7 @@ function getUnitTranslationKey(unit: Unit): TranslationPaths {
8282
function getOwnershipChecksDisplayText(
8383
error: ValueOf<typeof CONST.POLICY.OWNERSHIP_ERRORS>,
8484
translate: LocaleContextProps['translate'],
85+
convertToDisplayString: CurrencyListActionsContextType['convertToDisplayString'],
8586
policy: OnyxEntry<Policy>,
8687
accountLogin: string | undefined,
8788
) {

src/libs/actions/IOU/SplitTransactionUpdate.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ import type {OnyxData} from '@src/types/onyx/Request';
5454
import type {SearchResultDataType} from '@src/types/onyx/SearchResults';
5555
import type {TransactionChanges} from '@src/types/onyx/Transaction';
5656
import {getCleanUpTransactionThreadReportOnyxData} from './DeleteMoneyRequest';
57-
import {getAllReports, getMoneyRequestInformation, getMoneyRequestParticipantsFromReport, getMoneyRequestPolicyTags, getReportPreviewAction} from './index';
57+
import {getAllReports, getMoneyRequestInformation, getMoneyRequestParticipantsFromReport, getMoneyRequestPolicyTags, getPolicyTagsData, getReportPreviewAction} from './index';
5858
import type {BuildOnyxDataForMoneyRequestKeys, MoneyRequestInformationParams} from './index';
5959
import {getDeleteTrackExpenseInformation} from './TrackExpense';
6060
import {getUpdateMoneyRequestParams} from './UpdateMoneyRequest';
@@ -520,6 +520,9 @@ function updateSplitTransactions({
520520
transactionChanges,
521521
policy,
522522
policyTagList: policyTags ?? null,
523+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
524+
// eslint-disable-next-line @typescript-eslint/no-deprecated
525+
reportPolicyTags: getPolicyTagsData(transactionIOUReport?.policyID),
523526
policyCategories: policyCategories ?? null,
524527
newTransactionReportID: splitExpense?.reportID,
525528
policyRecentlyUsedCategories,

src/libs/actions/IOU/UpdateMoneyRequest.ts

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ function updateMoneyRequestDate({
104104
transactionChanges,
105105
policy,
106106
policyTagList: policyTags,
107+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
108+
// eslint-disable-next-line @typescript-eslint/no-deprecated
109+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
107110
policyCategories,
108111
currentUserAccountIDParam,
109112
currentUserEmailParam,
@@ -155,6 +158,9 @@ function updateMoneyRequestBillable({
155158
transactionChanges,
156159
policy,
157160
policyTagList,
161+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
162+
// eslint-disable-next-line @typescript-eslint/no-deprecated
163+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
158164
policyCategories,
159165
currentUserAccountIDParam,
160166
currentUserEmailParam,
@@ -202,6 +208,9 @@ function updateMoneyRequestReimbursable({
202208
transactionChanges,
203209
policy,
204210
policyTagList,
211+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
212+
// eslint-disable-next-line @typescript-eslint/no-deprecated
213+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
205214
policyCategories,
206215
currentUserAccountIDParam,
207216
currentUserEmailParam,
@@ -252,6 +261,9 @@ function updateMoneyRequestMerchant({
252261
transactionChanges,
253262
policy,
254263
policyTagList,
264+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
265+
// eslint-disable-next-line @typescript-eslint/no-deprecated
266+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
255267
policyCategories,
256268
currentUserAccountIDParam,
257269
currentUserEmailParam,
@@ -301,6 +313,9 @@ function updateMoneyRequestAttendees({
301313
transactionChanges,
302314
policy,
303315
policyTagList,
316+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
317+
// eslint-disable-next-line @typescript-eslint/no-deprecated
318+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
304319
policyCategories,
305320
violations,
306321
currentUserAccountIDParam,
@@ -354,6 +369,9 @@ function updateMoneyRequestTag({
354369
transactionChanges,
355370
policy,
356371
policyTagList,
372+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
373+
// eslint-disable-next-line @typescript-eslint/no-deprecated
374+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
357375
policyRecentlyUsedTags,
358376
policyCategories,
359377
hash,
@@ -401,6 +419,9 @@ function updateMoneyRequestTaxAmount({
401419
transactionChanges,
402420
policy,
403421
policyTagList,
422+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
423+
// eslint-disable-next-line @typescript-eslint/no-deprecated
424+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
404425
policyCategories,
405426
currentUserAccountIDParam,
406427
currentUserEmailParam,
@@ -454,6 +475,9 @@ function updateMoneyRequestTaxRate({
454475
transactionChanges,
455476
policy,
456477
policyTagList,
478+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
479+
// eslint-disable-next-line @typescript-eslint/no-deprecated
480+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
457481
policyCategories,
458482
currentUserAccountIDParam,
459483
currentUserEmailParam,
@@ -525,6 +549,9 @@ function updateMoneyRequestDistance({
525549
transactionChanges,
526550
policy,
527551
policyTagList,
552+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
553+
// eslint-disable-next-line @typescript-eslint/no-deprecated
554+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
528555
policyCategories,
529556
currentUserAccountIDParam,
530557
currentUserEmailParam,
@@ -625,6 +652,9 @@ function updateMoneyRequestCategory({
625652
transactionChanges,
626653
policy,
627654
policyTagList,
655+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
656+
// eslint-disable-next-line @typescript-eslint/no-deprecated
657+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
628658
policyCategories,
629659
policyRecentlyUsedCategories,
630660
currentUserAccountIDParam,
@@ -678,6 +708,9 @@ function updateMoneyRequestDescription({
678708
transactionChanges,
679709
policy,
680710
policyTagList,
711+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
712+
// eslint-disable-next-line @typescript-eslint/no-deprecated
713+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
681714
policyCategories,
682715
currentUserAccountIDParam,
683716
currentUserEmailParam,
@@ -754,6 +787,9 @@ function updateMoneyRequestDistanceRate({
754787
transactionChanges,
755788
policy,
756789
policyTagList,
790+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
791+
// eslint-disable-next-line @typescript-eslint/no-deprecated
792+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
757793
policyCategories,
758794
currentUserAccountIDParam,
759795
currentUserEmailParam,
@@ -830,7 +866,10 @@ function updateMoneyRequestAmountAndCurrency({
830866
iouReport: parentReport,
831867
transactionChanges,
832868
policy,
833-
policyTagList: policyTagList ?? null,
869+
policyTagList,
870+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
871+
// eslint-disable-next-line @typescript-eslint/no-deprecated
872+
reportPolicyTags: getPolicyTagsData(parentReport?.policyID),
834873
policyCategories: policyCategories ?? null,
835874
allowNegative,
836875
currentUserAccountIDParam,
@@ -851,6 +890,7 @@ type GetUpdateMoneyRequestParamsType = {
851890
transactionChanges: TransactionChanges;
852891
policy: OnyxEntry<OnyxTypes.Policy>;
853892
policyTagList: OnyxTypes.OnyxInputOrEntry<OnyxTypes.PolicyTagLists>;
893+
reportPolicyTags: OnyxEntry<OnyxTypes.PolicyTagLists>;
854894
policyRecentlyUsedTags?: OnyxEntry<RecentlyUsedTags>;
855895
policyCategories: OnyxTypes.OnyxInputOrEntry<OnyxTypes.PolicyCategories>;
856896
policyRecentlyUsedCategories?: OnyxEntry<OnyxTypes.RecentlyUsedCategories>;
@@ -890,6 +930,7 @@ function getUpdateMoneyRequestParams(params: GetUpdateMoneyRequestParamsType): U
890930
transactionChanges,
891931
policy,
892932
policyTagList,
933+
reportPolicyTags,
893934
policyRecentlyUsedTags,
894935
policyCategories,
895936
policyRecentlyUsedCategories,
@@ -1188,9 +1229,7 @@ function getUpdateMoneyRequestParams(params: GetUpdateMoneyRequestParamsType): U
11881229
const hasModifiedTag = 'tag' in transactionChanges;
11891230
if (hasModifiedTag) {
11901231
const optimisticPolicyRecentlyUsedTags = buildOptimisticPolicyRecentlyUsedTags({
1191-
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) and getPolicyRecentlyUsedTagsData (https://github.com/Expensify/App/issues/71491) with useOnyx hook
1192-
// eslint-disable-next-line @typescript-eslint/no-deprecated
1193-
policyTags: getPolicyTagsData(iouReport?.policyID),
1232+
policyTags: reportPolicyTags ?? {},
11941233
policyRecentlyUsedTags,
11951234
transactionTags: transactionChanges.tag,
11961235
});

src/libs/actions/MergeTransaction.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {isDistanceRequest, isTransactionPendingDelete} from '@src/libs/Transacti
3333
import ONYXKEYS from '@src/ONYXKEYS';
3434
import ROUTES from '@src/ROUTES';
3535
import type {CardList, MergeTransaction, Policy, PolicyCategories, PolicyTagLists, Report, ReportNextStepDeprecated, Transaction, TransactionViolations} from '@src/types/onyx';
36+
import {getPolicyTagsData} from './IOU';
3637
import type {UpdateMoneyRequestData} from './IOU';
3738
import {getCleanUpTransactionThreadReportOnyxData} from './IOU/DeleteMoneyRequest';
3839
import {getDeleteTrackExpenseInformation} from './IOU/TrackExpense';
@@ -271,6 +272,9 @@ function getOnyxTargetTransactionData({
271272
transactionChanges: filteredTransactionChanges,
272273
policy,
273274
policyTagList: policyTags,
275+
// TODO: Replace getPolicyTagsData (https://github.com/Expensify/App/issues/72721) with useOnyx hook
276+
// eslint-disable-next-line @typescript-eslint/no-deprecated
277+
reportPolicyTags: getPolicyTagsData(targetTransactionThreadParentReport?.policyID),
274278
policyCategories,
275279
violations: targetTransactionViolations ?? [],
276280
shouldBuildOptimisticModifiedExpenseReportAction,

src/pages/TransactionMerge/DetailsReviewPage.tsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ type DetailsReviewPageProps = PlatformStackScreenProps<MergeTransactionNavigator
4343
function DetailsReviewPage({route}: DetailsReviewPageProps) {
4444
const {translate, localeCompare} = useLocalize();
4545
const styles = useThemeStyles();
46-
const {getCurrencyDecimals} = useCurrencyListActions();
46+
const {getCurrencyDecimals, convertToDisplayString} = useCurrencyListActions();
4747
const {transactionID, isOnSearch, backTo} = route.params;
4848

4949
const [mergeTransaction, mergeTransactionMetadata] = useOnyx(`${ONYXKEYS.COLLECTION.MERGE_TRANSACTION}${getNonEmptyStringOnyxID(transactionID)}`);
@@ -150,10 +150,18 @@ function DetailsReviewPage({route}: DetailsReviewPageProps) {
150150
// Build merge fields array with all necessary information
151151
const mergeFields = useMemo(
152152
() =>
153-
buildMergeFieldsData(conflictFields, targetTransaction, sourceTransaction, mergeTransaction, targetTransactionPolicy, sourceTransactionPolicy, translate, localeCompare, [
154-
targetTransactionReport,
155-
sourceTransactionReport,
156-
]),
153+
buildMergeFieldsData(
154+
conflictFields,
155+
targetTransaction,
156+
sourceTransaction,
157+
mergeTransaction,
158+
targetTransactionPolicy,
159+
sourceTransactionPolicy,
160+
translate,
161+
convertToDisplayString,
162+
localeCompare,
163+
[targetTransactionReport, sourceTransactionReport],
164+
),
157165
[
158166
conflictFields,
159167
targetTransaction,
@@ -164,6 +172,7 @@ function DetailsReviewPage({route}: DetailsReviewPageProps) {
164172
targetTransactionPolicy,
165173
sourceTransactionPolicy,
166174
translate,
175+
convertToDisplayString,
167176
localeCompare,
168177
],
169178
);

0 commit comments

Comments
 (0)