Skip to content

Commit 345f8c6

Browse files
committed
simplify
1 parent 7b09571 commit 345f8c6

3 files changed

Lines changed: 13 additions & 58 deletions

File tree

src/libs/CardUtils.ts

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,41 +1072,13 @@ function collectUsedCSVFeedSlotNumbersFromCompanyCards(companyCards: CompanyFeed
10721072
return numbers;
10731073
}
10741074

1075-
function collectUsedCSVFeedSlotNumbersFromWorkspaceCardsCollection(allWorkspaceCardsList: OnyxCollection<WorkspaceCardsList> | undefined, domainID: number, csvPrefix: string): number[] {
1076-
const numbers: number[] = [];
1077-
const domainKeyPrefix = `${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${domainID}_`;
1078-
for (const key of Object.keys(allWorkspaceCardsList ?? {})) {
1079-
if (!key.startsWith(domainKeyPrefix)) {
1080-
continue;
1081-
}
1082-
const feedPart = key.slice(domainKeyPrefix.length);
1083-
if (!feedPart.startsWith(csvPrefix)) {
1084-
continue;
1085-
}
1086-
const suffix = feedPart.slice(csvPrefix.length);
1087-
if (!suffix) {
1088-
continue;
1089-
}
1090-
const n = Number.parseInt(suffix, 10);
1091-
if (!Number.isNaN(n) && n > 0) {
1092-
numbers.push(n);
1093-
}
1094-
}
1095-
return numbers;
1096-
}
1097-
10981075
/**
1099-
* Next available CSV file-import feed (`ccuploadN`). Uses `settings.companyCards` and any
1100-
* `cards_<domainID>_ccuploadN` workspace card keys so numbering matches Onyx, including feeds
1101-
* omitted from {@link getFeedType}'s `CombinedCardFeeds` input.
1076+
* Next available CSV file-import feed (`ccuploadN`) from `settings.companyCards` keys only,
1077+
* including feeds omitted from {@link getFeedType}'s `CombinedCardFeeds` input.
11021078
*/
1103-
function getCSVFeedType(companyCards: CompanyFeeds | undefined, domainID: number, allWorkspaceCardsList: OnyxCollection<WorkspaceCardsList> | undefined): CompanyCardFeedWithNumber {
1079+
function getCSVFeedType(companyCards: CompanyFeeds | undefined): CompanyCardFeedWithNumber {
11041080
const csvPrefix = CONST.COMPANY_CARD.FEED_BANK_NAME.CSV;
1105-
const merged = [
1106-
...collectUsedCSVFeedSlotNumbersFromCompanyCards(companyCards, csvPrefix),
1107-
...collectUsedCSVFeedSlotNumbersFromWorkspaceCardsCollection(allWorkspaceCardsList, domainID, csvPrefix),
1108-
];
1109-
const feedNumbers = [...new Set(merged)].sort((a, b) => a - b);
1081+
const feedNumbers = [...new Set(collectUsedCSVFeedSlotNumbersFromCompanyCards(companyCards, csvPrefix))].sort((a, b) => a - b);
11101082

11111083
let firstAvailableNumber = 1;
11121084
for (const num of feedNumbers) {

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,14 @@ function CompanyCardsImportedPage({route}: CompanyCardsImportedPageProps) {
3636
const workspaceAccountID = policy?.workspaceAccountID ?? CONST.DEFAULT_NUMBER_ID;
3737
const [lastSelectedFeed] = useOnyx(`${ONYXKEYS.COLLECTION.LAST_SELECTED_FEED}${policyID}`);
3838
const [workspaceCardFeeds] = useOnyx(`${ONYXKEYS.COLLECTION.SHARED_NVP_PRIVATE_DOMAIN_MEMBER}${workspaceAccountID}`);
39-
const [allWorkspaceCardsList] = useOnyx(ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST);
4039
const [isImportingTransactions, setIsImportingTransactions] = useState(false);
4140
const {setIsClosing} = useCloseImportPage();
4241
const shouldUseAdvancedFields = addNewCard?.data?.useAdvancedFields ?? false;
4342
const layoutName = addNewCard?.data?.companyCardLayoutName ?? '';
4443
const prefilledLayoutType = addNewCard?.data?.layoutType;
4544
const generatedLayoutType = useMemo(
46-
() => prefilledLayoutType ?? getCSVFeedType(workspaceCardFeeds?.settings?.companyCards, workspaceAccountID, allWorkspaceCardsList),
47-
[prefilledLayoutType, workspaceCardFeeds?.settings?.companyCards, workspaceAccountID, allWorkspaceCardsList],
45+
() => prefilledLayoutType ?? getCSVFeedType(workspaceCardFeeds?.settings?.companyCards),
46+
[prefilledLayoutType, workspaceCardFeeds?.settings?.companyCards],
4847
);
4948
const layoutType = prefilledLayoutType ?? generatedLayoutType;
5049
const [existingCardsList] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${layoutType}`);

tests/unit/CardUtilsTest.ts

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ import {
6767
} from '@src/libs/CardUtils';
6868
import type {CardProgramKey} from '@src/libs/CardUtils';
6969
import DateUtils from '@src/libs/DateUtils';
70-
import ONYXKEYS from '@src/ONYXKEYS';
7170
import type {
7271
BankAccountList,
7372
Card,
@@ -1887,34 +1886,19 @@ describe('CardUtils', () => {
18871886
describe('getCSVFeedType', () => {
18881887
it('returns the first gap when higher-numbered CSV feeds exist in companyCards only', () => {
18891888
expect(
1890-
getCSVFeedType(
1891-
{
1892-
ccupload3: {pending: false},
1893-
ccupload7: {pending: false},
1894-
} as CompanyFeeds,
1895-
111,
1896-
undefined,
1897-
),
1889+
getCSVFeedType({
1890+
ccupload3: {pending: false},
1891+
ccupload7: {pending: false},
1892+
} as CompanyFeeds),
18981893
).toBe('ccupload1');
18991894
});
19001895

1901-
it('treats existing workspace card list keys as used slots', () => {
1902-
const collection = {
1903-
[`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}111_ccupload3`]: {cardList: {}},
1904-
} as OnyxCollection<WorkspaceCardsList>;
1905-
expect(getCSVFeedType(undefined, 111, collection)).toBe('ccupload1');
1906-
});
1907-
1908-
it('merges companyCards and workspace keys when picking the next slot', () => {
1909-
expect(
1910-
getCSVFeedType({ccupload1: {pending: false}} as CompanyFeeds, 111, {
1911-
[`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}111_ccupload2`]: {cardList: {}},
1912-
} as OnyxCollection<WorkspaceCardsList>),
1913-
).toBe('ccupload3');
1896+
it('returns ccupload2 when ccupload1 is already in companyCards', () => {
1897+
expect(getCSVFeedType({ccupload1: {pending: false}} as CompanyFeeds)).toBe('ccupload2');
19141898
});
19151899

19161900
it('returns ccupload1 when no CSV feeds exist', () => {
1917-
expect(getCSVFeedType(undefined, 111, {})).toBe('ccupload1');
1901+
expect(getCSVFeedType(undefined)).toBe('ccupload1');
19181902
});
19191903
});
19201904

0 commit comments

Comments
 (0)