Skip to content

Commit 1d6d550

Browse files
authored
Merge pull request Expensify#86505 from bernhardoj/chore/66456-remove-onyx-connect-shared-billing-grace-period-subscription-utils-12
Pass userBillingGraceEndPeriods to shouldUseDefaultExpensePolicy
2 parents 366b621 + 2fe3d87 commit 1d6d550

13 files changed

Lines changed: 64 additions & 42 deletions

File tree

src/components/GPSTripStateChecker/useUpdateGpsNotification/index.ios.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@ function useUpdateGpsNotificationOnUnitChange() {
3636
const {translate} = useLocalize();
3737

3838
const [amountOwed] = useOnyx(ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED);
39+
const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END);
3940
const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END);
4041
const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${CONST.IOU.OPTIMISTIC_TRANSACTION_ID}`);
4142

4243
const defaultExpensePolicy = useDefaultExpensePolicy();
43-
const shouldUseDefaultExpensePolicy = shouldUseDefaultExpensePolicyUtil(CONST.IOU.TYPE.CREATE, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod);
44+
const shouldUseDefaultExpensePolicy = shouldUseDefaultExpensePolicyUtil(CONST.IOU.TYPE.CREATE, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod);
4445

4546
const unit = DistanceRequestUtils.getRate({transaction, policy: shouldUseDefaultExpensePolicy ? defaultExpensePolicy : undefined}).unit;
4647

src/libs/SubscriptionUtils.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,6 @@ Onyx.connect({
6666
callback: (value) => (privateAmountOwed = value),
6767
});
6868

69-
let deprecatedUserBillingGraceEndPeriods: OnyxCollection<BillingGraceEndPeriod>;
70-
Onyx.connect({
71-
key: ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END,
72-
callback: (value) => (deprecatedUserBillingGraceEndPeriods = value),
73-
waitForCollectionCallback: true,
74-
});
75-
7669
let deprecatedAllPolicies: OnyxCollection<Policy>;
7770
Onyx.connect({
7871
key: ONYXKEYS.COLLECTION.POLICY,
@@ -465,7 +458,7 @@ function doesUserHavePaymentCardAdded(userBillingFundID: number | undefined): bo
465458
function shouldRestrictUserBillableActions(
466459
policyID: string,
467460
ownerBillingGraceEndPeriod: OnyxEntry<number>,
468-
userBillingGraceEndPeriods: OnyxCollection<BillingGraceEndPeriod> = deprecatedUserBillingGraceEndPeriods,
461+
userBillingGraceEndPeriods: OnyxCollection<BillingGraceEndPeriod>,
469462
amountOwed: OnyxEntry<number> = privateAmountOwed,
470463
): boolean {
471464
const currentDate = new Date();

src/libs/actions/IOU/MoneyRequest.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import type {Route} from '@src/ROUTES';
2323
import ROUTES from '@src/ROUTES';
2424
import type {
2525
Beta,
26+
BillingGraceEndPeriod,
2627
IntroSelected,
2728
LastSelectedDistanceRates,
2829
PersonalDetailsList,
@@ -127,6 +128,7 @@ type MoneyRequestStepScanParticipantsFlowParams = {
127128
participants: Participant[];
128129
participantsPolicyTags: Record<string, PolicyTagLists>;
129130
amountOwed: OnyxEntry<number>;
131+
userBillingGraceEndPeriods: OnyxCollection<BillingGraceEndPeriod>;
130132
ownerBillingGraceEndPeriod?: OnyxEntry<number>;
131133
};
132134

@@ -174,6 +176,7 @@ type MoneyRequestStepDistanceNavigationParams = {
174176
personalOutputCurrency?: string;
175177
isSelfTourViewed: boolean;
176178
amountOwed: OnyxEntry<number>;
179+
userBillingGraceEndPeriods: OnyxCollection<BillingGraceEndPeriod>;
177180
ownerBillingGraceEndPeriod?: OnyxEntry<number>;
178181
};
179182

@@ -336,6 +339,7 @@ function handleMoneyRequestStepScanParticipants({
336339
participants,
337340
participantsPolicyTags,
338341
amountOwed,
342+
userBillingGraceEndPeriods,
339343
ownerBillingGraceEndPeriod,
340344
}: MoneyRequestStepScanParticipantsFlowParams) {
341345
if (backTo) {
@@ -514,7 +518,7 @@ function handleMoneyRequestStepScanParticipants({
514518

515519
// If there was no reportID, then that means the user started this flow from the global + menu
516520
// and an optimistic reportID was generated. In that case, the next step is to select the participants for this expense.
517-
if (shouldUseDefaultExpensePolicy(iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod)) {
521+
if (shouldUseDefaultExpensePolicy(iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod)) {
518522
const shouldAutoReport = !!defaultExpensePolicy?.autoReporting || isAutoReporting;
519523
const targetReport = shouldAutoReport ? getPolicyExpenseChat(currentUserAccountID, defaultExpensePolicy?.id) : selfDMReport;
520524
const transactionReportID = isSelfDM(targetReport) ? CONST.REPORT.UNREPORTED_REPORT_ID : targetReport?.reportID;
@@ -593,6 +597,7 @@ function handleMoneyRequestStepDistanceNavigation({
593597
personalOutputCurrency,
594598
isSelfTourViewed,
595599
amountOwed,
600+
userBillingGraceEndPeriods,
596601
ownerBillingGraceEndPeriod,
597602
}: MoneyRequestStepDistanceNavigationParams) {
598603
const isManualDistance = manualDistance !== undefined;
@@ -743,7 +748,7 @@ function handleMoneyRequestStepDistanceNavigation({
743748

744749
// If there was no reportID, then that means the user started this flow from the global menu
745750
// and an optimistic reportID was generated. In that case, the next step is to select the participants for this expense.
746-
if (defaultExpensePolicy && shouldUseDefaultExpensePolicy(iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod)) {
751+
if (defaultExpensePolicy && shouldUseDefaultExpensePolicy(iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod)) {
747752
const shouldAutoReport = !!defaultExpensePolicy?.autoReporting || isAutoReporting;
748753
const targetReport = shouldAutoReport ? getPolicyExpenseChat(currentUserAccountID, defaultExpensePolicy?.id) : selfDMReport;
749754
const isSelfDMReport = isSelfDM(targetReport);

src/libs/shouldUseDefaultExpensePolicy.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
1-
import type {OnyxEntry} from 'react-native-onyx';
1+
import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
22
import type {IOUType} from '@src/CONST';
33
import CONST from '@src/CONST';
4-
import type {OnyxInputOrEntry, Policy} from '@src/types/onyx';
4+
import type {BillingGraceEndPeriod, OnyxInputOrEntry, Policy} from '@src/types/onyx';
55
import {isPaidGroupPolicy} from './PolicyUtils';
66
import {shouldRestrictUserBillableActions} from './SubscriptionUtils';
77

8-
function shouldUseDefaultExpensePolicy(iouType: IOUType, defaultExpensePolicy: OnyxInputOrEntry<Policy>, amountOwed: OnyxEntry<number>, ownerBillingGraceEndPeriod: OnyxEntry<number>) {
8+
function shouldUseDefaultExpensePolicy(
9+
iouType: IOUType,
10+
defaultExpensePolicy: OnyxInputOrEntry<Policy>,
11+
amountOwed: OnyxEntry<number>,
12+
userBillingGraceEndPeriods: OnyxCollection<BillingGraceEndPeriod>,
13+
ownerBillingGraceEndPeriod: OnyxEntry<number>,
14+
) {
915
return (
1016
iouType === CONST.IOU.TYPE.CREATE &&
1117
isPaidGroupPolicy(defaultExpensePolicy) &&
1218
defaultExpensePolicy?.isPolicyExpenseChatEnabled &&
13-
!shouldRestrictUserBillableActions(defaultExpensePolicy.id, ownerBillingGraceEndPeriod, undefined, amountOwed)
19+
!shouldRestrictUserBillableActions(defaultExpensePolicy.id, ownerBillingGraceEndPeriod, userBillingGraceEndPeriods, amountOwed)
1420
);
1521
}
1622

src/pages/iou/request/step/IOURequestStepAmount.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ function IOURequestStepAmount({
108108
const defaultExpensePolicy = useDefaultExpensePolicy();
109109
const personalPolicy = usePersonalPolicy();
110110
const [amountOwed] = useOnyx(ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED);
111+
const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END);
111112
const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END);
112113
const isEditing = action === CONST.IOU.ACTION.EDIT;
113114
const {duplicateTransactions, duplicateTransactionViolations} = useDuplicateTransactionsAndViolations(isEditing && transactionID ? [transactionID] : []);
@@ -328,7 +329,7 @@ function IOURequestStepAmount({
328329

329330
// Starting from global + menu means no participant context exists yet,
330331
// so we need to handle participant selection based on available workspace settings
331-
if (shouldUseDefaultExpensePolicy(iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod)) {
332+
if (shouldUseDefaultExpensePolicy(iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod)) {
332333
const shouldAutoReport = !!defaultExpensePolicy?.autoReporting || !!personalPolicy?.autoReporting;
333334
const targetReport = shouldAutoReport ? getPolicyExpenseChat(currentUserAccountIDParam, defaultExpensePolicy?.id) : selfDMReport;
334335
const transactionReportID = isSelfDM(targetReport) ? CONST.REPORT.UNREPORTED_REPORT_ID : targetReport?.reportID;

src/pages/iou/request/step/IOURequestStepDistance.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ function IOURequestStepDistance({
9595
const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
9696
const defaultExpensePolicy = useDefaultExpensePolicy();
9797
const [amountOwed] = useOnyx(ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED);
98+
const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END);
9899
const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END);
99100
const [skipConfirmation] = useOnyx(`${ONYXKEYS.COLLECTION.SKIP_CONFIRMATION}${transactionID}`);
100101
const [lastSelectedDistanceRates] = useOnyx(ONYXKEYS.NVP_LAST_SELECTED_DISTANCE_RATES);
@@ -340,6 +341,7 @@ function IOURequestStepDistance({
340341
draftTransactionIDs,
341342
isSelfTourViewed: !!isSelfTourViewed,
342343
amountOwed,
344+
userBillingGraceEndPeriods,
343345
ownerBillingGraceEndPeriod,
344346
});
345347
}, [
@@ -378,6 +380,7 @@ function IOURequestStepDistance({
378380
draftTransactionIDs,
379381
isSelfTourViewed,
380382
amountOwed,
383+
userBillingGraceEndPeriods,
381384
ownerBillingGraceEndPeriod,
382385
]);
383386

src/pages/iou/request/step/IOURequestStepDistanceGPS/index.native.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ function IOURequestStepDistanceGPS({
6767
const shouldShowNotFoundPage = useShowNotFoundPageInIOUStep(action, iouType, reportActionID, report, transaction);
6868
const defaultExpensePolicy = useDefaultExpensePolicy();
6969
const [amountOwed] = useOnyx(ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED);
70+
const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END);
7071
const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END);
7172
const personalPolicy = usePersonalPolicy();
7273
const policy = usePolicy(report?.policyID);
@@ -78,7 +79,7 @@ function IOURequestStepDistanceGPS({
7879
const currentUserAccountIDParam = currentUserPersonalDetails.accountID;
7980
const currentUserEmailParam = currentUserPersonalDetails.login ?? '';
8081

81-
const shouldUseDefaultExpensePolicy = shouldUseDefaultExpensePolicyUtil(iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod);
82+
const shouldUseDefaultExpensePolicy = shouldUseDefaultExpensePolicyUtil(iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod);
8283

8384
const customUnitRateID = getRateID(transaction);
8485
const unit = DistanceRequestUtils.getRate({transaction, policy: shouldUseDefaultExpensePolicy ? defaultExpensePolicy : policy}).unit;
@@ -132,6 +133,7 @@ function IOURequestStepDistanceGPS({
132133
draftTransactionIDs,
133134
isSelfTourViewed: !!isSelfTourViewed,
134135
amountOwed,
136+
userBillingGraceEndPeriods,
135137
ownerBillingGraceEndPeriod,
136138
});
137139
};

src/pages/iou/request/step/IOURequestStepDistanceManual.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ function IOURequestStepDistanceManual({
8282
const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
8383
const defaultExpensePolicy = useDefaultExpensePolicy();
8484
const [amountOwed] = useOnyx(ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED);
85+
const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END);
8586
const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END);
8687
const {policyForMovingExpenses} = usePolicyForMovingExpenses();
8788
const [skipConfirmation] = useOnyx(`${ONYXKEYS.COLLECTION.SKIP_CONFIRMATION}${transactionID}`);
@@ -110,8 +111,8 @@ function IOURequestStepDistanceManual({
110111
const currentUserEmailParam = currentUserPersonalDetails.login ?? '';
111112

112113
const shouldUseDefaultExpensePolicy = useMemo(
113-
() => shouldUseDefaultExpensePolicyUtil(iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod),
114-
[iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod],
114+
() => shouldUseDefaultExpensePolicyUtil(iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod),
115+
[iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod],
115116
);
116117

117118
const customUnitRateID = getRateID(transaction);
@@ -249,6 +250,7 @@ function IOURequestStepDistanceManual({
249250
draftTransactionIDs,
250251
isSelfTourViewed: !!isSelfTourViewed,
251252
amountOwed,
253+
userBillingGraceEndPeriods,
252254
ownerBillingGraceEndPeriod,
253255
});
254256
},

src/pages/iou/request/step/IOURequestStepDistanceMap.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ function IOURequestStepDistanceMap({
9393
const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
9494
const defaultExpensePolicy = useDefaultExpensePolicy();
9595
const [amountOwed] = useOnyx(ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED);
96+
const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END);
9697
const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END);
9798
const [skipConfirmation] = useOnyx(`${ONYXKEYS.COLLECTION.SKIP_CONFIRMATION}${transactionID}`);
9899
const [lastSelectedDistanceRates] = useOnyx(ONYXKEYS.NVP_LAST_SELECTED_DISTANCE_RATES);
@@ -332,6 +333,7 @@ function IOURequestStepDistanceMap({
332333
draftTransactionIDs,
333334
isSelfTourViewed: !!isSelfTourViewed,
334335
amountOwed,
336+
userBillingGraceEndPeriods,
335337
ownerBillingGraceEndPeriod,
336338
});
337339
}, [
@@ -370,6 +372,7 @@ function IOURequestStepDistanceMap({
370372
draftTransactionIDs,
371373
isSelfTourViewed,
372374
amountOwed,
375+
userBillingGraceEndPeriods,
373376
ownerBillingGraceEndPeriod,
374377
]);
375378

src/pages/iou/request/step/IOURequestStepDistanceOdometer.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ function IOURequestStepDistanceOdometer({
114114
const personalPolicy = usePersonalPolicy();
115115
const defaultExpensePolicy = useDefaultExpensePolicy();
116116
const [amountOwed] = useOnyx(ONYXKEYS.NVP_PRIVATE_AMOUNT_OWED);
117+
const [userBillingGraceEndPeriods] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_USER_BILLING_GRACE_PERIOD_END);
117118
const [ownerBillingGraceEndPeriod] = useOnyx(ONYXKEYS.NVP_PRIVATE_OWNER_BILLING_GRACE_PERIOD_END);
118119
const selfDMReport = useSelfDMReport();
119120
const {policyForMovingExpenses} = usePolicyForMovingExpenses();
@@ -134,8 +135,8 @@ function IOURequestStepDistanceOdometer({
134135
const [shouldEnableDiscardConfirmation, setShouldEnableDiscardConfirmation] = useState(!isEditingConfirmation && !isEditing);
135136

136137
const shouldUseDefaultExpensePolicy = useMemo(
137-
() => shouldUseDefaultExpensePolicyUtil(iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod),
138-
[iouType, defaultExpensePolicy, amountOwed, ownerBillingGraceEndPeriod],
138+
() => shouldUseDefaultExpensePolicyUtil(iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod),
139+
[iouType, defaultExpensePolicy, amountOwed, userBillingGraceEndPeriods, ownerBillingGraceEndPeriod],
139140
);
140141
const customUnitRateID = getRateID(transaction);
141142

@@ -476,6 +477,7 @@ function IOURequestStepDistanceOdometer({
476477
draftTransactionIDs,
477478
isSelfTourViewed: !!isSelfTourViewed,
478479
amountOwed,
480+
userBillingGraceEndPeriods,
479481
ownerBillingGraceEndPeriod,
480482
});
481483
};

0 commit comments

Comments
 (0)