diff --git a/src/libs/API/parameters/StartIssueNewCardFlowParams.ts b/src/libs/API/parameters/StartIssueNewCardFlowParams.ts new file mode 100644 index 000000000000..8ed04b756a10 --- /dev/null +++ b/src/libs/API/parameters/StartIssueNewCardFlowParams.ts @@ -0,0 +1,5 @@ +type StartIssueNewCardFlowParams = { + policyID: string; +}; + +export default StartIssueNewCardFlowParams; diff --git a/src/libs/API/parameters/index.ts b/src/libs/API/parameters/index.ts index e16691c992f2..6b95190cd1ed 100644 --- a/src/libs/API/parameters/index.ts +++ b/src/libs/API/parameters/index.ts @@ -268,3 +268,4 @@ export type {default as CopyExistingPolicyConnectionParams} from './CopyExisting export type {default as ExportSearchItemsToCSVParams} from './ExportSearchItemsToCSVParams'; export type {default as UpdateExpensifyCardLimitParams} from './UpdateExpensifyCardLimitParams'; export type {CreateWorkspaceApprovalParams, UpdateWorkspaceApprovalParams, RemoveWorkspaceApprovalParams} from './WorkspaceApprovalParams'; +export type {default as StartIssueNewCardFlowParams} from './StartIssueNewCardFlowParams'; diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts index c4218b44f165..f15fba20bc98 100644 --- a/src/libs/API/types.ts +++ b/src/libs/API/types.ts @@ -703,6 +703,7 @@ const READ_COMMANDS = { SEARCH: 'Search', OPEN_SUBSCRIPTION_PAGE: 'OpenSubscriptionPage', OPEN_DRAFT_DISTANCE_EXPENSE: 'OpenDraftDistanceExpense', + START_ISSUE_NEW_CARD_FLOW: 'StartIssueNewCardFlow', } as const; type ReadCommand = ValueOf; @@ -758,6 +759,7 @@ type ReadCommandParameters = { [READ_COMMANDS.SEARCH]: Parameters.SearchParams; [READ_COMMANDS.OPEN_SUBSCRIPTION_PAGE]: null; [READ_COMMANDS.OPEN_DRAFT_DISTANCE_EXPENSE]: null; + [READ_COMMANDS.START_ISSUE_NEW_CARD_FLOW]: Parameters.StartIssueNewCardFlowParams; }; const SIDE_EFFECT_REQUEST_COMMANDS = { diff --git a/src/libs/actions/Card.ts b/src/libs/actions/Card.ts index b128e8f3045d..205a8dc41bba 100644 --- a/src/libs/actions/Card.ts +++ b/src/libs/actions/Card.ts @@ -7,9 +7,10 @@ import type { ReportVirtualExpensifyCardFraudParams, RequestReplacementExpensifyCardParams, RevealExpensifyCardDetailsParams, + StartIssueNewCardFlowParams, UpdateExpensifyCardLimitParams, } from '@libs/API/parameters'; -import {SIDE_EFFECT_REQUEST_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; +import {READ_COMMANDS, SIDE_EFFECT_REQUEST_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; import * as ErrorUtils from '@libs/ErrorUtils'; import * as NetworkStore from '@libs/Network/NetworkStore'; import CONST from '@src/CONST'; @@ -372,6 +373,14 @@ function updateExpensifyCardLimit(policyID: string, cardID: number, newLimit: nu API.write(WRITE_COMMANDS.UPDATE_EXPENSIFY_CARD_LIMIT, parameters, {optimisticData, successData, failureData}); } +function startIssueNewCardFlow(policyID: string) { + const parameters: StartIssueNewCardFlowParams = { + policyID, + }; + + API.read(READ_COMMANDS.START_ISSUE_NEW_CARD_FLOW, parameters); +} + export { requestReplacementExpensifyCard, activatePhysicalExpensifyCard, @@ -383,5 +392,6 @@ export { clearIssueNewCardFlow, updateExpensifyCardLimit, updateSettlementAccount, + startIssueNewCardFlow, }; export type {ReplacementReason}; diff --git a/src/pages/workspace/card/issueNew/IssueNewCardPage.tsx b/src/pages/workspace/card/issueNew/IssueNewCardPage.tsx index e12835a4a1e0..b16f6ef1dafc 100644 --- a/src/pages/workspace/card/issueNew/IssueNewCardPage.tsx +++ b/src/pages/workspace/card/issueNew/IssueNewCardPage.tsx @@ -1,7 +1,8 @@ -import React from 'react'; +import React, {useEffect} from 'react'; import {useOnyx} from 'react-native-onyx'; import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPolicyAndFullscreenLoading'; import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullscreenLoading'; +import * as Card from '@userActions/Card'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import AssigneeStep from './AssigneeStep'; @@ -17,7 +18,9 @@ function IssueNewCardPage({policy}: WithPolicyAndFullscreenLoadingProps) { const {currentStep} = issueNewCard ?? {}; // TODO: add logic to skip Assignee step when the flow is started from the member's profile page - // TODO: StartIssueNewCardFlow call to API + useEffect(() => { + Card.startIssueNewCardFlow(policy?.id ?? '-1'); + }, [policy?.id]); switch (currentStep) { case CONST.EXPENSIFY_CARD.STEP.ASSIGNEE: