Skip to content

Commit 13338e2

Browse files
authored
Merge pull request Expensify#78253 from DylanDylann/refactor-666
[Part 3]: Refactor buildPolicyData to pass Onyx value via param
2 parents 1e57f28 + a4eb803 commit 13338e2

22 files changed

Lines changed: 331 additions & 118 deletions

src/components/MoneyReportHeader.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -611,20 +611,22 @@ function MoneyReportHeader({
611611
const activePolicyCategories = allPolicyCategories?.[`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${defaultExpensePolicy?.id}`] ?? {};
612612

613613
for (const item of transactionList) {
614-
duplicateTransactionAction(
615-
item,
614+
duplicateTransactionAction({
615+
transaction: item,
616616
optimisticChatReportID,
617617
optimisticIOUReportID,
618618
isASAPSubmitBetaEnabled,
619+
introSelected,
620+
activePolicyID,
619621
quickAction,
620-
policyRecentlyUsedCurrencies ?? [],
621-
defaultExpensePolicy ?? undefined,
622-
activePolicyCategories,
623-
activePolicyExpenseChat,
624-
);
622+
policyRecentlyUsedCurrencies: policyRecentlyUsedCurrencies ?? [],
623+
targetPolicy: defaultExpensePolicy ?? undefined,
624+
targetPolicyCategories: activePolicyCategories,
625+
targetReport: activePolicyExpenseChat,
626+
});
625627
}
626628
},
627-
[activePolicyExpenseChat, allPolicyCategories, defaultExpensePolicy, isASAPSubmitBetaEnabled, quickAction, policyRecentlyUsedCurrencies],
629+
[activePolicyExpenseChat, activePolicyID, allPolicyCategories, defaultExpensePolicy, introSelected, isASAPSubmitBetaEnabled, quickAction, policyRecentlyUsedCurrencies],
628630
);
629631

630632
const getStatusIcon: (src: IconAsset) => React.ReactNode = (src) => (

src/components/MoneyRequestHeader.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
146146
const {deleteTransactions} = useDeleteTransactions({report: parentReport, reportActions: parentReportAction ? [parentReportAction] : [], policy});
147147
const {isBetaEnabled} = usePermissions();
148148
const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT);
149+
const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true});
150+
const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {canBeMissing: true});
149151

150152
const {isDelegateAccessRestricted, showDelegateNoAccessModal} = useContext(DelegateNoAccessContext);
151153
const isReportInRHP = route.name === SCREENS.RIGHT_MODAL.SEARCH_REPORT;
@@ -183,20 +185,22 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
183185
const activePolicyCategories = allPolicyCategories?.[`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${defaultExpensePolicy?.id}`] ?? {};
184186

185187
for (const item of transactions) {
186-
duplicateTransactionAction(
187-
item,
188+
duplicateTransactionAction({
189+
transaction: item,
188190
optimisticChatReportID,
189191
optimisticIOUReportID,
190192
isASAPSubmitBetaEnabled,
193+
introSelected,
194+
activePolicyID,
191195
quickAction,
192-
policyRecentlyUsedCurrencies ?? [],
193-
defaultExpensePolicy ?? undefined,
194-
activePolicyCategories,
195-
activePolicyExpenseChat,
196-
);
196+
policyRecentlyUsedCurrencies: policyRecentlyUsedCurrencies ?? [],
197+
targetPolicy: defaultExpensePolicy ?? undefined,
198+
targetPolicyCategories: activePolicyCategories,
199+
targetReport: activePolicyExpenseChat,
200+
});
197201
}
198202
},
199-
[activePolicyExpenseChat, allPolicyCategories, defaultExpensePolicy, isASAPSubmitBetaEnabled, quickAction, policyRecentlyUsedCurrencies],
203+
[activePolicyExpenseChat, allPolicyCategories, defaultExpensePolicy, isASAPSubmitBetaEnabled, introSelected, activePolicyID, quickAction, policyRecentlyUsedCurrencies],
200204
);
201205

202206
const getStatusIcon: (src: IconAsset) => ReactNode = (src) => (

src/components/SettlementButton/index.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ function SettlementButton({
131131
const activePolicy = usePolicy(activePolicyID);
132132
const activeAdminPolicies = getActiveAdminWorkspaces(policies, accountID.toString()).sort((a, b) => localeCompare(a.name || '', b.name || ''));
133133
const reportID = iouReport?.reportID;
134+
// eslint-disable-next-line @typescript-eslint/no-deprecated
134135
const personalPolicy = usePolicy(getPersonalPolicy()?.id);
135136

136137
const hasPreferredPaymentMethod = !!lastPaymentMethod;
@@ -353,8 +354,8 @@ function SettlementButton({
353354
}
354355

355356
return createWorkspace({
356-
introSelectedParam: introSelected,
357-
activePolicyIDParam: activePolicyID,
357+
introSelected,
358+
activePolicyID,
358359
currentUserAccountIDParam: currentUserPersonalDetails.accountID,
359360
currentUserEmailParam: currentUserPersonalDetails.email ?? '',
360361
}).policyID;

src/libs/actions/App.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -504,8 +504,8 @@ function createWorkspaceWithPolicyDraftAndNavigateToIt(params: CreateWorkspaceWi
504504
currency,
505505
file,
506506
lastUsedPaymentMethod,
507-
introSelectedParam: introSelected,
508-
activePolicyIDParam: activePolicyID,
507+
introSelected,
508+
activePolicyID,
509509
currentUserAccountIDParam,
510510
currentUserEmailParam,
511511
allReportsParam: allReports,
@@ -523,8 +523,8 @@ type SavePolicyDraftByNewWorkspaceParams = {
523523
currency?: string;
524524
file?: File;
525525
lastUsedPaymentMethod?: OnyxTypes.LastPaymentMethodType;
526-
introSelectedParam: OnyxEntry<OnyxTypes.IntroSelected>;
527-
activePolicyIDParam: string | undefined;
526+
introSelected: OnyxEntry<OnyxTypes.IntroSelected>;
527+
activePolicyID?: string;
528528
currentUserAccountIDParam: number;
529529
currentUserEmailParam: string;
530530
allReportsParam: OnyxCollection<OnyxTypes.Report>;
@@ -541,8 +541,8 @@ function savePolicyDraftByNewWorkspace({
541541
currency = '',
542542
file,
543543
lastUsedPaymentMethod,
544-
introSelectedParam,
545-
activePolicyIDParam,
544+
introSelected,
545+
activePolicyID,
546546
currentUserAccountIDParam,
547547
currentUserEmailParam,
548548
allReportsParam,
@@ -556,8 +556,8 @@ function savePolicyDraftByNewWorkspace({
556556
currency,
557557
file,
558558
lastUsedPaymentMethod,
559-
introSelectedParam,
560-
activePolicyIDParam,
559+
introSelected,
560+
activePolicyID,
561561
currentUserAccountIDParam,
562562
currentUserEmailParam,
563563
allReportsParam,

src/libs/actions/IOU/index.ts

Lines changed: 60 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,10 @@ type CreateTrackExpenseParams = {
668668
shouldPlaySound?: boolean;
669669
shouldHandleNavigation?: boolean;
670670
isASAPSubmitBetaEnabled: boolean;
671+
currentUserAccountIDParam: number;
672+
currentUserEmailParam: string;
673+
introSelected: OnyxEntry<OnyxTypes.IntroSelected>;
674+
activePolicyID: string | undefined;
671675
quickAction: OnyxEntry<OnyxTypes.QuickAction>;
672676
};
673677

@@ -704,6 +708,10 @@ type GetTrackExpenseInformationParams = {
704708
transactionParams: GetTrackExpenseInformationTransactionParams;
705709
retryParams?: StartSplitBilActionParams | CreateTrackExpenseParams | RequestMoneyInformation | ReplaceReceipt;
706710
isASAPSubmitBetaEnabled: boolean;
711+
currentUserAccountIDParam: number;
712+
currentUserEmailParam: string;
713+
introSelected: OnyxEntry<OnyxTypes.IntroSelected>;
714+
activePolicyID: string | undefined;
707715
quickAction: OnyxEntry<OnyxTypes.QuickAction>;
708716
};
709717

@@ -3541,6 +3549,10 @@ function getTrackExpenseInformation(params: GetTrackExpenseInformationParams): T
35413549
transactionParams,
35423550
retryParams,
35433551
isASAPSubmitBetaEnabled,
3552+
currentUserAccountIDParam,
3553+
currentUserEmailParam,
3554+
introSelected,
3555+
activePolicyID,
35443556
quickAction,
35453557
} = params;
35463558
const {payeeAccountID = userAccountID, payeeEmail = currentUserEmail, participant} = participantParams;
@@ -3654,6 +3666,10 @@ function getTrackExpenseInformation(params: GetTrackExpenseInformationParams): T
36543666
policyID: policy?.id,
36553667
expenseReportId: chatReport?.reportID,
36563668
engagementChoice: CONST.ONBOARDING_CHOICES.TRACK_WORKSPACE,
3669+
currentUserAccountIDParam,
3670+
currentUserEmailParam,
3671+
introSelected,
3672+
activePolicyID,
36573673
});
36583674
createdWorkspaceParams = workspaceData.params;
36593675
optimisticData.push(...workspaceData.optimisticData);
@@ -6091,6 +6107,10 @@ function trackExpense(params: CreateTrackExpenseParams) {
60916107
shouldHandleNavigation = true,
60926108
shouldPlaySound = true,
60936109
isASAPSubmitBetaEnabled,
6110+
currentUserAccountIDParam,
6111+
currentUserEmailParam,
6112+
introSelected,
6113+
activePolicyID,
60946114
quickAction,
60956115
} = params;
60966116
const {participant, payeeAccountID, payeeEmail} = participantParams;
@@ -6214,6 +6234,10 @@ function trackExpense(params: CreateTrackExpenseParams) {
62146234
},
62156235
retryParams,
62166236
isASAPSubmitBetaEnabled,
6237+
currentUserAccountIDParam,
6238+
currentUserEmailParam,
6239+
introSelected,
6240+
activePolicyID,
62176241
quickAction,
62186242
}) ?? {};
62196243
const activeReportID = isMoneyRequestReport ? report?.reportID : chatReport?.reportID;
@@ -6395,17 +6419,33 @@ function trackExpense(params: CreateTrackExpenseParams) {
63956419
notifyNewAction(activeReportID, payeeAccountID);
63966420
}
63976421

6398-
function duplicateExpenseTransaction(
6399-
transaction: OnyxEntry<OnyxTypes.Transaction>,
6400-
optimisticChatReportID: string,
6401-
optimisticIOUReportID: string,
6402-
isASAPSubmitBetaEnabled: boolean,
6403-
quickAction: OnyxEntry<OnyxTypes.QuickAction>,
6404-
policyRecentlyUsedCurrencies: string[],
6405-
targetPolicy?: OnyxEntry<OnyxTypes.Policy>,
6406-
targetPolicyCategories?: OnyxEntry<OnyxTypes.PolicyCategories>,
6407-
targetReport?: OnyxTypes.Report,
6408-
) {
6422+
type DuplicateExpenseTransactionParams = {
6423+
transaction: OnyxEntry<OnyxTypes.Transaction>;
6424+
optimisticChatReportID: string;
6425+
optimisticIOUReportID: string;
6426+
isASAPSubmitBetaEnabled: boolean;
6427+
introSelected: OnyxEntry<OnyxTypes.IntroSelected>;
6428+
activePolicyID: string | undefined;
6429+
quickAction: OnyxEntry<OnyxTypes.QuickAction>;
6430+
policyRecentlyUsedCurrencies: string[];
6431+
targetPolicy?: OnyxEntry<OnyxTypes.Policy>;
6432+
targetPolicyCategories?: OnyxEntry<OnyxTypes.PolicyCategories>;
6433+
targetReport?: OnyxTypes.Report;
6434+
};
6435+
6436+
function duplicateExpenseTransaction({
6437+
transaction,
6438+
optimisticChatReportID,
6439+
optimisticIOUReportID,
6440+
isASAPSubmitBetaEnabled,
6441+
introSelected,
6442+
activePolicyID,
6443+
quickAction,
6444+
policyRecentlyUsedCurrencies,
6445+
targetPolicy,
6446+
targetPolicyCategories,
6447+
targetReport,
6448+
}: DuplicateExpenseTransactionParams) {
64096449
if (!transaction) {
64106450
return;
64116451
}
@@ -6464,6 +6504,8 @@ function duplicateExpenseTransaction(
64646504
},
64656505
report: undefined,
64666506
isDraftPolicy: false,
6507+
introSelected,
6508+
activePolicyID,
64676509
quickAction,
64686510
};
64696511
return trackExpense(trackExpenseParams);
@@ -9323,7 +9365,7 @@ function getPayMoneyRequestParams({
93239365
bankAccountID,
93249366
currentUserAccountIDParam,
93259367
currentUserEmailParam,
9326-
introSelectedParam,
9368+
introSelected,
93279369
paymentPolicyID,
93289370
lastUsedPaymentMethod,
93299371
existingB2BInvoiceReport,
@@ -9343,7 +9385,7 @@ function getPayMoneyRequestParams({
93439385
activePolicy?: OnyxEntry<OnyxTypes.Policy>;
93449386
currentUserAccountIDParam?: number;
93459387
currentUserEmailParam?: string;
9346-
introSelectedParam?: OnyxEntry<OnyxTypes.IntroSelected>;
9388+
introSelected?: OnyxEntry<OnyxTypes.IntroSelected>;
93479389
}): PayMoneyRequestData {
93489390
const isInvoiceReport = isInvoiceReportReportUtils(iouReport);
93499391
let payerPolicyID = activePolicy?.id;
@@ -9365,10 +9407,10 @@ function getPayMoneyRequestParams({
93659407
policyOwnerEmail: currentUserEmail,
93669408
makeMeAdmin: true,
93679409
policyID: payerPolicyID,
9368-
currentUserAccountIDParam,
9369-
currentUserEmailParam,
9370-
introSelectedParam,
9371-
activePolicyIDParam: activePolicy?.id,
9410+
currentUserAccountIDParam: currentUserAccountIDParam ?? CONST.DEFAULT_NUMBER_ID,
9411+
currentUserEmailParam: currentUserEmailParam ?? '',
9412+
introSelected,
9413+
activePolicyID: activePolicy?.id,
93729414
});
93739415
const {adminsChatReportID, adminsCreatedReportActionID, expenseChatReportID, expenseCreatedReportActionID, customUnitRateID, customUnitID, ownerEmail, policyName} = params;
93749416

@@ -11081,7 +11123,7 @@ function payInvoice({
1108111123
activePolicy,
1108211124
currentUserAccountIDParam,
1108311125
currentUserEmailParam,
11084-
introSelectedParam: introSelected,
11126+
introSelected,
1108511127
});
1108611128

1108711129
const paymentSelected = paymentMethodType === CONST.IOU.PAYMENT_TYPE.VBBA ? CONST.IOU.PAYMENT_SELECTED.BBA : CONST.IOU.PAYMENT_SELECTED.PBA;

0 commit comments

Comments
 (0)