Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b99dab7
update routes
carlosmiceli Dec 19, 2025
53be187
update screens
carlosmiceli Dec 19, 2025
c5ac609
update tableprops
carlosmiceli Dec 19, 2025
725ed7f
proper imports to useAssignCard
carlosmiceli Dec 19, 2025
5d4e90c
proper switch steps with nagivation
carlosmiceli Dec 19, 2025
58928c5
new screens to modal stack navigator
carlosmiceli Dec 19, 2025
8db8e23
screens for workspace to rhp
carlosmiceli Dec 19, 2025
e3a81d8
screesn in RootNavigatorParamList
carlosmiceli Dec 19, 2025
07363c6
updating SettingsNavigatorParamList
carlosmiceli Dec 19, 2025
a34a88b
fix button color
carlosmiceli Dec 19, 2025
1ff742c
start cleanup of Assign Card Feed Page
carlosmiceli Dec 19, 2025
d3ae795
more cleanup
carlosmiceli Dec 19, 2025
e249dc6
update navigation logic in assignee step
carlosmiceli Dec 19, 2025
fced4bb
complete revamp of assignee step
carlosmiceli Dec 19, 2025
123eb79
update card step
carlosmiceli Dec 19, 2025
c964144
update card name step
carlosmiceli Dec 19, 2025
df84281
revamp card selection step and props
carlosmiceli Dec 19, 2025
03ffb9f
update navigation for card selection
carlosmiceli Dec 19, 2025
ca7c8ae
changes to confirmatuion step
carlosmiceli Dec 19, 2025
3cab583
confirmation steps props revamp
carlosmiceli Dec 19, 2025
7178507
fix start date navigation
carlosmiceli Dec 19, 2025
4a1acd2
clenaup
carlosmiceli Dec 19, 2025
907813d
Update src/ROUTES.ts
carlosmiceli Dec 19, 2025
147e4f0
Update src/ROUTES.ts
carlosmiceli Dec 19, 2025
a0631e0
change for usePolicy
carlosmiceli Dec 19, 2025
53deec4
early returns
carlosmiceli Dec 19, 2025
79b2697
fix jest test
carlosmiceli Dec 19, 2025
d1ba0f5
fix conflicts
carlosmiceli Dec 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2194,6 +2194,44 @@ const ROUTES = {
// eslint-disable-next-line no-restricted-syntax -- Legacy route generation
getUrlWithBackToParam(`workspaces/${params.policyID}/company-cards/${encodeURIComponent(params.feed)}/assign-card/${params.cardID}`, backTo),
},
WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE: {
route: 'workspaces/:policyID/company-cards/:feed/assign-card/:cardID/assignee',
getRoute: (params: WorkspaceCompanyCardsAssignCardParams, backTo?: string) =>
// eslint-disable-next-line no-restricted-syntax -- Legacy route generation
getUrlWithBackToParam(
`workspaces/${params.policyID}/company-cards/${encodeURIComponent(params.feed)}/assign-card/${encodeURIComponent(params.cardID)}/assignee`,
backTo,
),
},
WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION: {
route: 'workspaces/:policyID/company-cards/:feed/assign-card/:cardID/card-selection',
getRoute: (params: WorkspaceCompanyCardsAssignCardParams) =>
`workspaces/${params.policyID}/company-cards/${encodeURIComponent(params.feed)}/assign-card/${encodeURIComponent(params.cardID)}/card-selection` as const,
},
WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE: {
route: 'workspaces/:policyID/company-cards/:feed/assign-card/:cardID/transaction-start-date',
getRoute: (params: WorkspaceCompanyCardsAssignCardParams) =>
`workspaces/${params.policyID}/company-cards/${encodeURIComponent(params.feed)}/assign-card/${encodeURIComponent(params.cardID)}/transaction-start-date` as const,
},
WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CARD_NAME: {
route: 'workspaces/:policyID/company-cards/:feed/assign-card/:cardID/card-name',
getRoute: (params: WorkspaceCompanyCardsAssignCardParams) =>
`workspaces/${params.policyID}/company-cards/${encodeURIComponent(params.feed)}/assign-card/${encodeURIComponent(params.cardID)}/card-name` as const,
},
WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION: {
route: 'workspaces/:policyID/company-cards/:feed/assign-card/:cardID/confirmation',
getRoute: (params: WorkspaceCompanyCardsAssignCardParams, backTo?: string) =>
// eslint-disable-next-line no-restricted-syntax -- Legacy route generation
getUrlWithBackToParam(
`workspaces/${params.policyID}/company-cards/${encodeURIComponent(params.feed)}/assign-card/${encodeURIComponent(params.cardID)}/confirmation`,
backTo,
),
},
WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER: {
route: 'workspaces/:policyID/company-cards/:feed/assign-card/:cardID/invite-new-member',
getRoute: (params: WorkspaceCompanyCardsAssignCardParams) =>
`workspaces/${params.policyID}/company-cards/${encodeURIComponent(params.feed)}/assign-card/${encodeURIComponent(params.cardID)}/invite-new-member` as const,
},
WORKSPACE_COMPANY_CARD_DETAILS: {
route: 'workspaces/:policyID/company-cards/:bank/:cardID',

Expand Down
6 changes: 6 additions & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,12 @@ const SCREENS = {
PROFILE: 'Workspace_Overview',
COMPANY_CARDS: 'Workspace_CompanyCards',
COMPANY_CARDS_ASSIGN_CARD: 'Workspace_CompanyCards_AssignCard',
COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE: 'Workspace_CompanyCards_AssignCard_Assignee',
COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION: 'Workspace_CompanyCards_AssignCard_Card_Selection',
COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE: 'Workspace_CompanyCards_AssignCard_Transaction_Start_Date',
COMPANY_CARDS_ASSIGN_CARD_CARD_NAME: 'Workspace_CompanyCards_AssignCard_Card_Name',
COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION: 'Workspace_CompanyCards_AssignCard_Confirmation',
COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER: 'Workspace_CompanyCards_AssignCard_Invite_New_Member',
COMPANY_CARDS_SELECT_FEED: 'Workspace_CompanyCards_Select_Feed',
COMPANY_CARDS_BANK_CONNECTION: 'Workspace_CompanyCards_BankConnection',
COMPANY_CARDS_ADD_NEW: 'Workspace_CompanyCards_New',
Expand Down
25 changes: 22 additions & 3 deletions src/hooks/useAssignCard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
import Navigation from '@libs/Navigation/Navigation';
import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils';
import {getDomainNameForPolicy, isDeletedPolicyEmployee} from '@libs/PolicyUtils';
import {clearAddNewCardFlow, openPolicyCompanyCardsPage, setAddNewCompanyCardStepAndData, setAssignCardStepAndData} from '@userActions/CompanyCards';
import {clearAddNewCardFlow, clearAssignCardStepAndData, openPolicyCompanyCardsPage, setAddNewCompanyCardStepAndData, setAssignCardStepAndData} from '@userActions/CompanyCards';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
Expand Down Expand Up @@ -145,9 +145,28 @@ function useAssignCard({selectedFeed, policyID, setShouldShowOfflineModal}: UseA
}

clearAddNewCardFlow();
setAssignCardStepAndData({data, currentStep});
clearAssignCardStepAndData();
setAssignCardStepAndData({data});

Navigation.setNavigationActionToMicrotaskQueue(() => {
Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD.getRoute({policyID, feed: selectedFeed, cardID}));
const routeParams = {policyID, feed: selectedFeed, cardID: cardID ?? ''};

switch (currentStep) {
case CONST.COMPANY_CARD.STEP.PLAID_CONNECTION:
case CONST.COMPANY_CARD.STEP.BANK_CONNECTION:
Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD.getRoute({policyID, feed: selectedFeed, cardID}));
break;
case CONST.COMPANY_CARD.STEP.CARD:
Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION.getRoute(routeParams));
break;
case CONST.COMPANY_CARD.STEP.TRANSACTION_START_DATE:
Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE.getRoute(routeParams));
break;
case CONST.COMPANY_CARD.STEP.ASSIGNEE:
default:
Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE.getRoute(routeParams));
break;
}
});
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,12 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
[SCREENS.WORKSPACE.INVOICES_COMPANY_WEBSITE]: () => require<ReactComponentModule>('../../../../pages/workspace/invoices/WorkspaceInvoicingDetailsWebsite').default,
[SCREENS.WORKSPACE.INVOICES_VERIFY_ACCOUNT]: () => require<ReactComponentModule>('../../../../pages/workspace/invoices/WorkspaceInvoicesVerifyAccountPage').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/AssignCardFeedPage').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/AssigneeStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/CardSelectionStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/TransactionStartDateStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_NAME]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/CardNameStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/ConfirmationStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/InviteNewMemberStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_SELECT_FEED]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/WorkspaceCompanyCardFeedSelectorPage').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_BANK_CONNECTION]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/BankConnection').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ADD_NEW]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/addNew/AddNewCardPage').default,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,12 @@ const WORKSPACE_TO_RHP: Partial<Record<keyof WorkspaceSplitNavigatorParamList, s
SCREENS.WORKSPACE.COMPANY_CARDS_SETTINGS_FEED_NAME,
SCREENS.WORKSPACE.COMPANY_CARDS_SETTINGS_STATEMENT_CLOSE_DATE,
SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD,
SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE,
SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION,
SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE,
SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_NAME,
SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION,
SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER,
SCREENS.WORKSPACE.COMPANY_CARD_DETAILS,
SCREENS.WORKSPACE.COMPANY_CARD_NAME,
SCREENS.WORKSPACE.COMPANY_CARD_EXPORT,
Expand Down
18 changes: 18 additions & 0 deletions src/libs/Navigation/linkingConfig/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -764,6 +764,24 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_NAME]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CARD_NAME.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER.route,
},
[SCREENS.WORKSPACE.INVITE]: {
path: ROUTES.WORKSPACE_INVITE.route,
},
Expand Down
36 changes: 36 additions & 0 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1207,6 +1207,42 @@ type SettingsNavigatorParamList = {
// eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
backTo?: Routes;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE]: {
policyID: string;
feed: CompanyCardFeed;
cardID: string;

// eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
backTo?: Routes;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION]: {
policyID: string;
feed: CompanyCardFeed;
cardID: string;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE]: {
policyID: string;
feed: CompanyCardFeed;
cardID: string;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_NAME]: {
policyID: string;
feed: CompanyCardFeed;
cardID: string;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION]: {
policyID: string;
feed: CompanyCardFeed;
cardID: string;

// eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
backTo?: Routes;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER]: {
policyID: string;
feed: CompanyCardFeed;
cardID: string;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_SETTINGS_FEED_NAME]: {
policyID: string;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ function WorkspaceCompanyCardTableItem({
)}
{!isAssigned && (
<Button
success
text={shouldUseNarrowTableRowLayout ? translate('workspace.companyCards.assign') : translate('workspace.companyCards.assignCard')}
onPress={assignCard}
isDisabled={isAssigningCardDisabled}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import {isActingAsDelegateSelector} from '@selectors/Account';
import React, {useEffect} from 'react';
import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
import ScreenWrapper from '@components/ScreenWrapper';
import useInitial from '@hooks/useInitial';
import useOnyx from '@hooks/useOnyx';
import {getCompanyCardFeed} from '@libs/CardUtils';
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
Expand Down Expand Up @@ -32,11 +31,8 @@ function AssignCardFeedPage({route, policy}: AssignCardFeedPageProps) {
const [assignCard] = useOnyx(ONYXKEYS.ASSIGN_CARD, {canBeMissing: true});
const currentStep = assignCard?.currentStep;

const backTo = route.params?.backTo;
const policyID = policy?.id;
const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: isActingAsDelegateSelector, canBeMissing: true});
const firstAssigneeEmail = useInitial(assignCard?.data?.email);
const shouldUseBackToParam = !firstAssigneeEmail || firstAssigneeEmail === assignCard?.data?.email;

useEffect(() => {
return () => {
Expand Down Expand Up @@ -107,9 +103,7 @@ function AssignCardFeedPage({route, policy}: AssignCardFeedPageProps) {
case CONST.COMPANY_CARD.STEP.CONFIRMATION:
return (
<ConfirmationStep
policyID={policyID}
feed={feed}
backTo={shouldUseBackToParam ? backTo : undefined}
route={route}
/>
);
case CONST.COMPANY_CARD.STEP.INVITE_NEW_MEMBER:
Expand Down
Loading
Loading