Skip to content

Commit 70df4b0

Browse files
authored
Merge pull request Expensify#65597 from s77rt/statement-close-date-new-direct-feed
Company Cards: Add statement close date to new direct card feeds (using plaid)
2 parents 0069b99 + 55b3e1c commit 70df4b0

3 files changed

Lines changed: 32 additions & 11 deletions

File tree

src/pages/workspace/companyCards/WorkspaceCompanyCardStatementCloseDateSelectionList/index.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,20 @@ type WorkspaceCompanyCardStatementCloseDateSelectionListProps = {
2525
onSubmit: (statementCloseDate: CompanyCardStatementCloseDate, statementCustomCloseDate: number | undefined) => void;
2626
onBackButtonPress: () => void;
2727
enabledWhenOffline: boolean;
28+
defaultDate?: CompanyCardStatementCloseDate;
2829
};
2930

30-
function WorkspaceCompanyCardStatementCloseDateSelectionList({confirmText, onSubmit, onBackButtonPress, enabledWhenOffline}: WorkspaceCompanyCardStatementCloseDateSelectionListProps) {
31+
function WorkspaceCompanyCardStatementCloseDateSelectionList({
32+
confirmText,
33+
onSubmit,
34+
onBackButtonPress,
35+
enabledWhenOffline,
36+
defaultDate,
37+
}: WorkspaceCompanyCardStatementCloseDateSelectionListProps) {
3138
const {translate} = useLocalize();
3239
const styles = useThemeStyles();
3340

34-
const [selectedDate, setSelectedDate] = useState<CompanyCardStatementCloseDate | undefined>(undefined);
41+
const [selectedDate, setSelectedDate] = useState<CompanyCardStatementCloseDate | undefined>(defaultDate);
3542
const [selectedCustomDate, setSelectedCustomDate] = useState<number | undefined>(undefined);
3643
const [error, setError] = useState<string | undefined>(undefined);
3744

src/pages/workspace/companyCards/addNew/PlaidConnectionStep.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import HeaderWithBackButton from '@components/HeaderWithBackButton';
77
import PlaidLink from '@components/PlaidLink';
88
import ScreenWrapper from '@components/ScreenWrapper';
99
import Text from '@components/Text';
10+
import useEnvironment from '@hooks/useEnvironment';
1011
import useLocalize from '@hooks/useLocalize';
1112
import useNetwork from '@hooks/useNetwork';
1213
import useOnyx from '@hooks/useOnyx';
@@ -25,6 +26,7 @@ import type {CompanyCardFeed} from '@src/types/onyx';
2526
import {isEmptyObject} from '@src/types/utils/EmptyObject';
2627

2728
function PlaidConnectionStep({feed}: {feed?: CompanyCardFeed}) {
29+
const {isDevelopment} = useEnvironment();
2830
const {translate} = useLocalize();
2931
const styles = useThemeStyles();
3032
const theme = useTheme();
@@ -40,6 +42,9 @@ function PlaidConnectionStep({feed}: {feed?: CompanyCardFeed}) {
4042
const plaidDataErrorMessage = !isEmptyObject(plaidErrors) ? (Object.values(plaidErrors).at(0) as string) : '';
4143
const {isOffline} = useNetwork();
4244

45+
// s77rt remove DEV lock
46+
const shouldSelectStatementCloseDate = isDevelopment;
47+
4348
const isAuthenticatedWithPlaid = useCallback(() => !!plaidData?.bankAccounts?.length || !isEmptyObject(plaidData?.errors), [plaidData]);
4449

4550
/**
@@ -130,8 +135,9 @@ function PlaidConnectionStep({feed}: {feed?: CompanyCardFeed}) {
130135
});
131136
return;
132137
}
138+
133139
setAddNewCompanyCardStepAndData({
134-
step: CONST.COMPANY_CARDS.STEP.BANK_CONNECTION,
140+
step: shouldSelectStatementCloseDate ? CONST.COMPANY_CARDS.STEP.SELECT_STATEMENT_CLOSE_DATE : CONST.COMPANY_CARDS.STEP.BANK_CONNECTION,
135141
data: {
136142
publicToken,
137143
plaidConnectedFeed,

src/pages/workspace/companyCards/addNew/StatementCloseDateStep.tsx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, {useCallback} from 'react';
22
import useOnyx from 'react-native-onyx/dist/useOnyx';
33
import useCardFeeds from '@hooks/useCardFeeds';
44
import useLocalize from '@hooks/useLocalize';
5+
import usePermissions from '@hooks/usePermissions';
56
import {addNewCompanyCardsFeed, setAddNewCompanyCardStepAndData} from '@libs/actions/CompanyCards';
67
import Navigation from '@libs/Navigation/Navigation';
78
import WorkspaceCompanyCardStatementCloseDateSelectionList from '@pages/workspace/companyCards/WorkspaceCompanyCardStatementCloseDateSelectionList';
@@ -17,36 +18,43 @@ type StatementCloseDateStepProps = {
1718

1819
function StatementCloseDateStep({policyID}: StatementCloseDateStepProps) {
1920
const {translate} = useLocalize();
20-
21+
const {isBetaEnabled} = usePermissions();
2122
const [addNewCard] = useOnyx(ONYXKEYS.ADD_NEW_COMPANY_CARD, {canBeMissing: false});
2223
const [lastSelectedFeed] = useOnyx(`${ONYXKEYS.COLLECTION.LAST_SELECTED_FEED}${policyID}`, {canBeMissing: true});
23-
2424
const [cardFeeds] = useCardFeeds(policyID);
2525

26+
const isPlaid = isBetaEnabled(CONST.BETAS.PLAID_COMPANY_CARDS) && !!addNewCard?.data?.publicToken;
27+
2628
const submit = useCallback(
2729
// s77rt make use of statementCloseDate / statementCustomCloseDate and remove disable lint rule
2830
// eslint-disable-next-line @typescript-eslint/no-unused-vars
2931
(statementCloseDate: CompanyCardStatementCloseDate, statementCustomCloseDate: number | undefined) => {
30-
if (!addNewCard?.data.feedDetails) {
32+
if (isPlaid) {
33+
setAddNewCompanyCardStepAndData({
34+
step: CONST.COMPANY_CARDS.STEP.BANK_CONNECTION,
35+
});
3136
return;
3237
}
3338

34-
addNewCompanyCardsFeed(policyID, addNewCard.data.feedType, addNewCard.data.feedDetails, cardFeeds, lastSelectedFeed);
35-
Navigation.goBack(ROUTES.WORKSPACE_COMPANY_CARDS.getRoute(policyID));
39+
if (addNewCard?.data.feedDetails) {
40+
addNewCompanyCardsFeed(policyID, addNewCard.data.feedType, addNewCard.data.feedDetails, cardFeeds, lastSelectedFeed);
41+
Navigation.goBack(ROUTES.WORKSPACE_COMPANY_CARDS.getRoute(policyID));
42+
}
3643
},
37-
[policyID, addNewCard, cardFeeds, lastSelectedFeed],
44+
[policyID, addNewCard, cardFeeds, lastSelectedFeed, isPlaid],
3845
);
3946

4047
const goBack = useCallback(() => {
41-
setAddNewCompanyCardStepAndData({step: CONST.COMPANY_CARDS.STEP.CARD_DETAILS});
42-
}, []);
48+
setAddNewCompanyCardStepAndData({step: isPlaid ? CONST.COMPANY_CARDS.STEP.PLAID_CONNECTION : CONST.COMPANY_CARDS.STEP.CARD_DETAILS});
49+
}, [isPlaid]);
4350

4451
return (
4552
<WorkspaceCompanyCardStatementCloseDateSelectionList
4653
confirmText={translate('common.submit')}
4754
onSubmit={submit}
4855
onBackButtonPress={goBack}
4956
enabledWhenOffline={false}
57+
defaultDate={CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH}
5058
/>
5159
);
5260
}

0 commit comments

Comments
 (0)