Skip to content

Commit b54b996

Browse files
authored
Merge pull request #84042 from callstack-internal/add-personal-card-steps
Add personal card steps
2 parents 67f2ddc + 33ed14b commit b54b996

45 files changed

Lines changed: 1503 additions & 57 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/CONST/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3974,6 +3974,7 @@ const CONST = {
39743974
WELLS_FARGO: 'oauth.wellsfargo.com',
39753975
AMEX_DIRECT: 'oauth.americanexpressfdx.com',
39763976
AMEX_FILE_DOWNLOAD: 'americanexpressfd.us',
3977+
MOCK_BANK: 'oauth.mockbank.com',
39773978
CSV: 'upload',
39783979
},
39793980
},

src/ONYXKEYS.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,9 @@ const ONYXKEYS = {
528528
/** Stores the information about the state of adding a new company card */
529529
ADD_NEW_COMPANY_CARD: 'addNewCompanyCard',
530530

531+
/** Stores the information about the state of adding a new personal card */
532+
ADD_NEW_PERSONAL_CARD: 'addNewPersonalCard',
533+
531534
/** Stores the information about the state of assigning a company card */
532535
ASSIGN_CARD: 'assignCard',
533536

@@ -1419,6 +1422,7 @@ type OnyxValuesMapping = {
14191422
[ONYXKEYS.NVP_TRAVEL_SETTINGS]: OnyxTypes.TravelSettings;
14201423
[ONYXKEYS.REVIEW_DUPLICATES]: OnyxTypes.ReviewDuplicates;
14211424
[ONYXKEYS.ADD_NEW_COMPANY_CARD]: OnyxTypes.AddNewCompanyCardFeed;
1425+
[ONYXKEYS.ADD_NEW_PERSONAL_CARD]: OnyxTypes.AddNewPersonalCard;
14221426
[ONYXKEYS.ASSIGN_CARD]: OnyxTypes.AssignCard;
14231427
[ONYXKEYS.MOBILE_SELECTION_MODE]: boolean;
14241428
[ONYXKEYS.DUPLICATE_WORKSPACE]: OnyxTypes.DuplicateWorkspace;

src/ROUTES.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import StringUtils from './libs/StringUtils';
1919
import {getUrlWithParams} from './libs/Url';
2020
import SCREENS from './SCREENS';
2121
import type {Screen} from './SCREENS';
22-
import type {CompanyCardFeedWithDomainID} from './types/onyx';
22+
import type {CompanyCardFeedWithDomainID, PersonalCardFeed} from './types/onyx';
2323
import type {ConnectionName, SageIntacctMappingName} from './types/onyx/Policy';
2424
import type {CustomFieldType} from './types/onyx/PolicyEmployee';
2525

@@ -499,6 +499,11 @@ const ROUTES = {
499499
route: 'settings/wallet/:bankAccountID/share-bank-account',
500500
getRoute: (bankAccountID: number | undefined) => `settings/wallet/${bankAccountID}/share-bank-account` as const,
501501
},
502+
SETTINGS_WALLET_PERSONAL_CARD_ADD_NEW: 'settings/wallet/add-personal-card',
503+
SETTINGS_WALLET_PERSONAL_CARD_BANK_CONNECTION: {
504+
route: 'settings/wallet/add-personal-card/:feed/bank-connection',
505+
getRoute: (feed: PersonalCardFeed) => `settings/wallet/add-personal-card/${feed}/bank-connection` as const,
506+
},
502507
SETTINGS_WALLET_PERSONAL_CARD_UPGRADE: 'settings/wallet/add-personal-card/upgrade',
503508
SETTINGS_WALLET_PERSONAL_CARD_WARNING: 'settings/wallet/add-personal-card/warning',
504509
SETTINGS_WALLET_CARD_DIGITAL_DETAILS_UPDATE_ADDRESS: {

src/SCREENS.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ const SCREENS = {
205205
PERSONAL_CARD_DETAILS: 'Settings_Wallet_Personal_Card_Details',
206206
PERSONAL_CARD_EDIT_NAME: 'Settings_Wallet_Personal_Card_Edit_Name',
207207
PERSONAL_CARD_EDIT_TRANSACTION_START_DATE: 'Settings_Wallet_Personal_Card_Edit_Transaction_Start_Date',
208+
PERSONAL_CARD_BANK_CONNECTION: 'Settings_Wallet_PersonalCard_BankConnection',
209+
PERSONAL_CARD_ADD_NEW: 'Settings_Wallet_PersonalCard_New',
208210
PERSONAL_CARD_WARNING: 'Settings_Wallet_PersonalCard_Warning',
209211
PERSONAL_CARD_UPGRADE: 'Settings_Wallet_PersonalCard_Upgrade',
210212
},

src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ function TransactionGroupListItem<TItem extends ListItem>({
113113
const [allReportMetadata] = useOnyx(ONYXKEYS.COLLECTION.REPORT_METADATA);
114114
const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST);
115115
const [cardFeeds] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_DOMAIN_MEMBER);
116-
const [cardList] = useOnyx(ONYXKEYS.CARD_LIST);
117116
const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);
118117

119118
let transactions: TransactionListItemType[];
@@ -133,7 +132,6 @@ function TransactionGroupListItem<TItem extends ListItem>({
133132
isActionLoadingSet,
134133
allReportMetadata,
135134
cardFeeds,
136-
cardList,
137135
conciergeReportID,
138136
}) as [TransactionListItemType[], number];
139137
transactions = sectionData.map((transactionItem) => ({

src/components/Search/index.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,6 @@ function Search({
295295
const [allReportMetadata] = useOnyx(ONYXKEYS.COLLECTION.REPORT_METADATA);
296296
const [visibleColumns] = useOnyx(ONYXKEYS.FORMS.SEARCH_ADVANCED_FILTERS_FORM, {selector: columnsSelector});
297297
const [customCardNames] = useOnyx(ONYXKEYS.NVP_EXPENSIFY_COMPANY_CARDS_CUSTOM_NAMES);
298-
const [cardList] = useOnyx(ONYXKEYS.CARD_LIST);
299298
const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);
300299

301300
const isExpenseReportType = type === CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT;
@@ -508,7 +507,6 @@ function Search({
508507
allTransactionViolations: violations,
509508
customCardNames,
510509
allReportMetadata,
511-
cardList,
512510
conciergeReportID,
513511
onyxPersonalDetailsList,
514512
});
@@ -535,7 +533,6 @@ function Search({
535533
violations,
536534
customCardNames,
537535
allReportMetadata,
538-
cardList,
539536
conciergeReportID,
540537
onyxPersonalDetailsList,
541538
]);
@@ -573,7 +570,6 @@ function Search({
573570
isActionLoadingSet,
574571
cardFeeds,
575572
allReportMetadata,
576-
cardList,
577573
conciergeReportID,
578574
});
579575
return {
@@ -597,7 +593,6 @@ function Search({
597593
cardFeeds,
598594
bankAccountList,
599595
allReportMetadata,
600-
cardList,
601596
conciergeReportID,
602597
]);
603598

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {addPersonalPlaidCard} from '@userActions/Plaid';
2+
import ONYXKEYS from '@src/ONYXKEYS';
3+
import useOnyx from './useOnyx';
4+
5+
export default function useImportPersonalPlaidAccounts() {
6+
const [addNewCard] = useOnyx(ONYXKEYS.ADD_NEW_PERSONAL_CARD);
7+
8+
const plaidToken = addNewCard?.data?.publicToken;
9+
const plaidFeed = addNewCard?.data?.plaidConnectedFeed;
10+
const plaidAccounts = addNewCard?.data?.plaidAccounts;
11+
const country = addNewCard?.data?.selectedCountry;
12+
13+
return () => {
14+
if (!plaidToken || !plaidFeed || !country || !plaidAccounts?.length) {
15+
return;
16+
}
17+
addPersonalPlaidCard(plaidToken, plaidFeed, country, JSON.stringify(plaidAccounts));
18+
};
19+
}

src/hooks/useSearchSections.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ function useSearchSections(): UseSearchSectionsResult {
4848
const [cardFeeds] = useOnyx(ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_DOMAIN_MEMBER);
4949
const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST);
5050
const [allReportMetadata] = useOnyx(ONYXKEYS.COLLECTION.REPORT_METADATA);
51-
const [cardList] = useOnyx(ONYXKEYS.CARD_LIST);
5251

5352
const archivedReportsIdSet = useArchivedReportsIdSet();
5453
const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);
@@ -77,7 +76,6 @@ function useSearchSections(): UseSearchSectionsResult {
7776
isActionLoadingSet,
7877
cardFeeds,
7978
allReportMetadata,
80-
cardList,
8179
conciergeReportID,
8280
});
8381
results = getSortedSections(type, status ?? '', searchData, localeCompare, translate, sortBy, sortOrder, groupBy).map((value) => value.reportID);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {useCallback} from 'react';
2+
import {getFeedConnectionBrokenCard} from '@libs/CardUtils';
3+
import {updatePersonalCardConnection} from '@userActions/PersonalCards';
4+
import useCardFeedErrors from './useCardFeedErrors';
5+
6+
export default function useUpdatePersonalCardBrokenConnection() {
7+
const {personalCardsWithBrokenConnection} = useCardFeedErrors();
8+
const brokenCard = getFeedConnectionBrokenCard(personalCardsWithBrokenConnection);
9+
const brokenCardId = brokenCard?.cardID?.toString();
10+
11+
const updateBrokenConnection = useCallback(() => {
12+
if (!brokenCardId) {
13+
return;
14+
}
15+
updatePersonalCardConnection(brokenCardId, brokenCard?.lastScrapeResult);
16+
}, [brokenCard?.lastScrapeResult, brokenCardId]);
17+
18+
return {updateBrokenConnection, isCardBroken: !!brokenCardId};
19+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
type AddPersonalPlaidCardParams = {
2+
publicToken: string;
3+
feed: string;
4+
country: string;
5+
plaidAccounts: string;
6+
};
7+
8+
export default AddPersonalPlaidCardParams;

0 commit comments

Comments
 (0)