From 09f1d0368813768d9d59ab2198d1fa74edca9a28 Mon Sep 17 00:00:00 2001 From: Carlos Miceli Date: Fri, 19 Dec 2025 11:18:22 -0500 Subject: [PATCH 01/10] fix back navigation from confirmation screen --- .../workspace/companyCards/assignCard/ConfirmationStep.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx index 0d34f101e7c0..6e6565b53655 100644 --- a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx @@ -113,7 +113,7 @@ function ConfirmationStep({route}: ConfirmationStepProps) { switch (step) { case CONST.COMPANY_CARD.STEP.ASSIGNEE: - Navigation.goBack(); + Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE.getRoute(routeParams)); break; case CONST.COMPANY_CARD.STEP.TRANSACTION_START_DATE: Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE.getRoute(routeParams)); @@ -125,7 +125,7 @@ function ConfirmationStep({route}: ConfirmationStepProps) { }; const handleBackButtonPress = () => { - Navigation.goBack(); + Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE.getRoute({policyID, feed, cardID})); }; return ( From 2f17c284703969ae91b49111aa6499b85e060432 Mon Sep 17 00:00:00 2001 From: Carlos Miceli Date: Fri, 19 Dec 2025 11:38:37 -0500 Subject: [PATCH 02/10] clean up navigation from confirmation screen --- .../companyCards/assignCard/ConfirmationStep.tsx | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx index 6e6565b53655..57b9733b7db5 100644 --- a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx @@ -14,11 +14,9 @@ import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useOnyx from '@hooks/useOnyx'; import usePolicy from '@hooks/usePolicy'; -import useRootNavigationState from '@hooks/useRootNavigationState'; import useThemeStyles from '@hooks/useThemeStyles'; import useWorkspaceAccountID from '@hooks/useWorkspaceAccountID'; import {getCompanyCardFeed, getDomainOrWorkspaceAccountID, getPlaidCountry, getPlaidInstitutionId, isSelectedFeedExpired, maskCardNumber} from '@libs/CardUtils'; -import {isFullScreenName} from '@libs/Navigation/helpers/isNavigatorName'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; @@ -64,23 +62,15 @@ function ConfirmationStep({route}: ConfirmationStepProps) { const cardholderEmail = data?.email ?? ''; const cardholderAccountID = cardholder?.accountID; - const currentFullScreenRoute = useRootNavigationState((state) => state?.routes?.findLast((route) => isFullScreenName(route.name))); - useEffect(() => { if (!assignCard?.isAssignmentFinished) { return; } - if (backTo) { - Navigation.goBack(backTo); - } else if (!shouldUseBackToParam && route.params?.backTo) { - Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS.getRoute(policyID), {forceReplace: true}); - } else { - Navigation.dismissModal(); - } + Navigation.dismissModal(); // eslint-disable-next-line @typescript-eslint/no-deprecated InteractionManager.runAfterInteractions(() => clearAssignCardStepAndData()); - }, [assignCard?.isAssignmentFinished, backTo, policyID, shouldUseBackToParam, route.params?.backTo, currentFullScreenRoute?.state?.routes]); + }, [assignCard?.isAssignmentFinished]); const submit = () => { if (!policyID) { From 5e1f53e706a4efcdfb926aa76e470a91cd0a0675 Mon Sep 17 00:00:00 2001 From: Carlos Miceli Date: Fri, 19 Dec 2025 11:41:00 -0500 Subject: [PATCH 03/10] remove email from start date header --- .../companyCards/assignCard/TransactionStartDateStep.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx b/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx index f7765080df8e..de149105fc01 100644 --- a/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx @@ -96,7 +96,6 @@ function TransactionStartDateStep({route}: {route: PlatformStackRouteProp {translate('workspace.companyCards.startDateDescription')} From 7665e0c246869a80eb49a7a3c7547c371be16fde Mon Sep 17 00:00:00 2001 From: Carlos Miceli Date: Fri, 19 Dec 2025 11:55:25 -0500 Subject: [PATCH 04/10] lint --- src/ROUTES.ts | 10 ++------- src/components/Table/TableBody.tsx | 5 ++++- src/hooks/useAssignCard.ts | 2 +- .../ModalStackNavigators/index.tsx | 3 ++- .../assignCard/AssignCardFeedPage.tsx | 6 +----- .../companyCards/assignCard/AssigneeStep.tsx | 12 ++++++----- .../companyCards/assignCard/CardNameStep.tsx | 5 +---- .../assignCard/CardSelectionStep.tsx | 2 +- .../assignCard/ConfirmationStep.tsx | 4 +++- .../assignCard/InviteNewMemberStep.tsx | 11 +++++----- .../assignCard/TransactionStartDateStep.tsx | 8 +------ .../WorkspaceInviteMessageComponent.tsx | 21 +++++++++---------- .../members/WorkspaceMemberDetailsPage.tsx | 8 ++++--- 13 files changed, 43 insertions(+), 54 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index cc270d6e8751..ed8582228761 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -2198,10 +2198,7 @@ const ROUTES = { 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, - ), + 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', @@ -2222,10 +2219,7 @@ const ROUTES = { 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, - ), + 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', diff --git a/src/components/Table/TableBody.tsx b/src/components/Table/TableBody.tsx index c7f5d7389126..02fd25032776 100644 --- a/src/components/Table/TableBody.tsx +++ b/src/components/Table/TableBody.tsx @@ -82,7 +82,10 @@ function TableBody({contentContainerStyle, ...props}: TableBodyProps) { return ( // eslint-disable-next-line react/jsx-props-no-spreading - + data={filteredAndSortedData} ListEmptyComponent={isEmptyResult ? EmptyResultComponent : ListEmptyComponent} diff --git a/src/hooks/useAssignCard.ts b/src/hooks/useAssignCard.ts index 361270d58e62..601e0683b16a 100644 --- a/src/hooks/useAssignCard.ts +++ b/src/hooks/useAssignCard.ts @@ -149,7 +149,7 @@ function useAssignCard({selectedFeed, policyID, setShouldShowOfflineModal}: UseA setAssignCardStepAndData({data}); Navigation.setNavigationActionToMicrotaskQueue(() => { - const routeParams = {policyID, feed: selectedFeed, cardID: cardID ?? ''}; + const routeParams = {policyID, feed: selectedFeed, cardID}; switch (currentStep) { case CONST.COMPANY_CARD.STEP.PLAID_CONNECTION: diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 99d460af5870..48e21851dc4b 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -701,7 +701,8 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/companyCards/assignCard/AssignCardFeedPage').default, [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE]: () => require('../../../../pages/workspace/companyCards/assignCard/AssigneeStep').default, [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION]: () => require('../../../../pages/workspace/companyCards/assignCard/CardSelectionStep').default, - [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE]: () => require('../../../../pages/workspace/companyCards/assignCard/TransactionStartDateStep').default, + [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE]: () => + require('../../../../pages/workspace/companyCards/assignCard/TransactionStartDateStep').default, [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_NAME]: () => require('../../../../pages/workspace/companyCards/assignCard/CardNameStep').default, [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CONFIRMATION]: () => require('../../../../pages/workspace/companyCards/assignCard/ConfirmationStep').default, [SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_INVITE_NEW_MEMBER]: () => require('../../../../pages/workspace/companyCards/assignCard/InviteNewMemberStep').default, diff --git a/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx b/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx index af541bf18dba..d81f37f476f6 100644 --- a/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx +++ b/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx @@ -101,11 +101,7 @@ function AssignCardFeedPage({route, policy}: AssignCardFeedPageProps) { case CONST.COMPANY_CARD.STEP.CARD_NAME: return ; case CONST.COMPANY_CARD.STEP.CONFIRMATION: - return ( - - ); + return ; case CONST.COMPANY_CARD.STEP.INVITE_NEW_MEMBER: return ( ; @@ -32,8 +31,6 @@ function CardNameStep({route}: CardNameStepProps) { const [assignCard] = useOnyx(ONYXKEYS.ASSIGN_CARD, {canBeMissing: true}); const policyID = route.params.policyID; - const feed = route.params.feed; - const cardID = route.params.cardID; const data = assignCard?.data; diff --git a/src/pages/workspace/companyCards/assignCard/CardSelectionStep.tsx b/src/pages/workspace/companyCards/assignCard/CardSelectionStep.tsx index d0ecdf263f7d..5228dbd9611b 100644 --- a/src/pages/workspace/companyCards/assignCard/CardSelectionStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/CardSelectionStep.tsx @@ -30,7 +30,7 @@ import variables from '@styles/variables'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import type {CompanyCardFeedWithDomainID} from '@src/types/onyx'; type CardSelectionStepProps = PlatformStackScreenProps; diff --git a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx index 57b9733b7db5..5a8a69b0092e 100644 --- a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx @@ -26,7 +26,7 @@ import {assignWorkspaceCompanyCard, clearAssignCardStepAndData, setAddNewCompany import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import type {CompanyCardFeedWithDomainID, CurrencyList} from '@src/types/onyx'; import {getEmptyObject} from '@src/types/utils/EmptyObject'; @@ -111,6 +111,8 @@ function ConfirmationStep({route}: ConfirmationStepProps) { case CONST.COMPANY_CARD.STEP.CARD_NAME: Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_CARD_NAME.getRoute(routeParams)); break; + default: + break; } }; diff --git a/src/pages/workspace/companyCards/assignCard/InviteNewMemberStep.tsx b/src/pages/workspace/companyCards/assignCard/InviteNewMemberStep.tsx index ae20ae014ddd..3af12b6cf8a4 100644 --- a/src/pages/workspace/companyCards/assignCard/InviteNewMemberStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/InviteNewMemberStep.tsx @@ -13,12 +13,12 @@ import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavig import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import Navigation from '@navigation/Navigation'; import WorkspaceInviteMessageComponent from '@pages/workspace/members/WorkspaceInviteMessageComponent'; -import {clearInviteDraft} from '@userActions/Policy/Member'; import {setAssignCardStepAndData} from '@userActions/CompanyCards'; +import {clearInviteDraft} from '@userActions/Policy/Member'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import type {AssignCardData} from '@src/types/onyx/AssignCard'; type InviteeNewMemberStepProps = PlatformStackScreenProps & @@ -28,11 +28,10 @@ function InviteNewMemberStep({route, currentUserPersonalDetails}: InviteeNewMemb const {translate} = useLocalize(); const [assignCard] = useOnyx(ONYXKEYS.ASSIGN_CARD, {canBeMissing: true}); const [workspaceCardFeeds] = useOnyx(ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST, {canBeMissing: false}); - const isEditing = assignCard?.isEditing; const policyID = route.params.policyID; const feed = route.params.feed as CompanyCardFeedWithDomainID; const cardID = route.params.cardID; - const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`); + const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, {canBeMissing: true}); const [list] = useCardsList(feed); const [cardFeeds] = useCardFeeds(policy?.id); const filteredCardList = getFilteredCardList(list, cardFeeds?.[feed]?.accountList, workspaceCardFeeds); @@ -63,7 +62,7 @@ function InviteNewMemberStep({route, currentUserPersonalDetails}: InviteeNewMemb if (assignCard?.data?.encryptedCardNumber) { data.encryptedCardNumber = assignCard.data.encryptedCardNumber; data.cardNumber = assignCard.data.cardNumber; - data.startDate = assignCard?.data?.startDate ?? new Date().toISOString().split('T')[0]; + data.startDate = assignCard?.data?.startDate ?? new Date().toISOString().split('T').at(0); data.dateOption = assignCard?.data?.dateOption ?? CONST.COMPANY_CARD.TRANSACTION_START_DATE_OPTIONS.CUSTOM; setAssignCardStepAndData({ currentStep: CONST.COMPANY_CARD.STEP.CONFIRMATION, @@ -74,7 +73,7 @@ function InviteNewMemberStep({route, currentUserPersonalDetails}: InviteeNewMemb } else if (hasOnlyOneCardToAssign(filteredCardList)) { data.cardNumber = Object.keys(filteredCardList).at(0); data.encryptedCardNumber = Object.values(filteredCardList).at(0); - data.startDate = assignCard?.data?.startDate ?? new Date().toISOString().split('T')[0]; + data.startDate = assignCard?.data?.startDate ?? new Date().toISOString().split('T').at(0); data.dateOption = assignCard?.data?.dateOption ?? CONST.COMPANY_CARD.TRANSACTION_START_DATE_OPTIONS.CUSTOM; setAssignCardStepAndData({ currentStep: CONST.COMPANY_CARD.STEP.CONFIRMATION, diff --git a/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx b/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx index de149105fc01..b9604b56d958 100644 --- a/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx @@ -19,21 +19,15 @@ import Navigation from '@navigation/Navigation'; import {setAssignCardStepAndData} from '@userActions/CompanyCards'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES from '@src/ROUTES'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; function TransactionStartDateStep({route}: {route: PlatformStackRouteProp}) { const {translate} = useLocalize(); const styles = useThemeStyles(); - const policyID = route.params.policyID; - const feed = route.params.feed; - const cardID = route.params.cardID; - const [assignCard] = useOnyx(ONYXKEYS.ASSIGN_CARD, {canBeMissing: true}); const isEditing = assignCard?.isEditing; const data = assignCard?.data; - const assigneeDisplayName = Str.removeSMSDomain(getPersonalDetailByEmail(data?.email ?? '')?.displayName ?? ''); const [dateOptionSelected, setDateOptionSelected] = useState(data?.dateOption ?? CONST.COMPANY_CARD.TRANSACTION_START_DATE_OPTIONS.CUSTOM); const [errorText, setErrorText] = useState(''); diff --git a/src/pages/workspace/members/WorkspaceInviteMessageComponent.tsx b/src/pages/workspace/members/WorkspaceInviteMessageComponent.tsx index e39fa72b2deb..e09be4aec02f 100644 --- a/src/pages/workspace/members/WorkspaceInviteMessageComponent.tsx +++ b/src/pages/workspace/members/WorkspaceInviteMessageComponent.tsx @@ -23,16 +23,15 @@ import {clearDraftValues} from '@libs/actions/FormActions'; import {openExternalLink} from '@libs/actions/Link'; import {addMembersToWorkspace, clearWorkspaceInviteRoleDraft} from '@libs/actions/Policy/Member'; import {setWorkspaceInviteMessageDraft} from '@libs/actions/Policy/Policy'; -import {setAssignCardStepAndData} from '@userActions/CompanyCards'; -import {clearInviteDraft} from '@userActions/Policy/Member'; import getIsNarrowLayout from '@libs/getIsNarrowLayout'; import Navigation from '@libs/Navigation/Navigation'; import {getPersonalDetailsForAccountIDs} from '@libs/OptionsListUtils'; import {getDisplayNameOrDefault, getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; import {getMemberAccountIDsForWorkspace, goBackFromInvalidPolicy} from '@libs/PolicyUtils'; -import {getDefaultAvatarURL} from '@libs/UserAvatarUtils'; import updateMultilineInputRange from '@libs/updateMultilineInputRange'; import variables from '@styles/variables'; +import {setAssignCardStepAndData} from '@userActions/CompanyCards'; +import {clearInviteDraft} from '@userActions/Policy/Member'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import AccessOrNotFoundWrapper from '@src/pages/workspace/AccessOrNotFoundWrapper'; @@ -252,14 +251,14 @@ function WorkspaceInviteMessageComponent({ - {isInviteNewMemberStep && ( - - )} + {isInviteNewMemberStep && ( + + )} {shouldShowMemberNames && !isInviteNewMemberStep && ( Date: Fri, 19 Dec 2025 12:01:28 -0500 Subject: [PATCH 05/10] lint and prettier --- .../workspace/companyCards/assignCard/ConfirmationStep.tsx | 4 ---- .../companyCards/assignCard/TransactionStartDateStep.tsx | 7 +------ src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx | 4 ++-- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx index 5a8a69b0092e..fc95f9893916 100644 --- a/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx @@ -9,7 +9,6 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScrollView from '@components/ScrollView'; import Text from '@components/Text'; import useCardFeeds from '@hooks/useCardFeeds'; -import useInitial from '@hooks/useInitial'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useOnyx from '@hooks/useOnyx'; @@ -41,9 +40,6 @@ function ConfirmationStep({route}: ConfirmationStepProps) { const {isOffline} = useNetwork(); const [assignCard] = useOnyx(ONYXKEYS.ASSIGN_CARD, {canBeMissing: false}); - const firstAssigneeEmail = useInitial(assignCard?.data?.email); - const shouldUseBackToParam = !firstAssigneeEmail || firstAssigneeEmail === assignCard?.data?.email; - const backTo = shouldUseBackToParam ? route.params?.backTo : undefined; const policy = usePolicy(policyID); const [countryByIp] = useOnyx(ONYXKEYS.COUNTRY, {canBeMissing: false}); const [currencyList = getEmptyObject()] = useOnyx(ONYXKEYS.CURRENCY_LIST, {canBeMissing: true}); diff --git a/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx b/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx index b9604b56d958..8086c60b08d2 100644 --- a/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx +++ b/src/pages/workspace/companyCards/assignCard/TransactionStartDateStep.tsx @@ -1,5 +1,4 @@ import {format, subDays} from 'date-fns'; -import {Str} from 'expensify-common'; import React, {useState} from 'react'; import {View} from 'react-native'; import Button from '@components/Button'; @@ -11,17 +10,13 @@ import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useThemeStyles from '@hooks/useThemeStyles'; -import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; -import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; -import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils'; import {isRequiredFulfilled} from '@libs/ValidationUtils'; import Navigation from '@navigation/Navigation'; import {setAssignCardStepAndData} from '@userActions/CompanyCards'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type SCREENS from '@src/SCREENS'; -function TransactionStartDateStep({route}: {route: PlatformStackRouteProp}) { +function TransactionStartDateStep() { const {translate} = useLocalize(); const styles = useThemeStyles(); diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx index 98c8003e8649..18000d1c8c3e 100644 --- a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx +++ b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx @@ -416,13 +416,13 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM Date: Fri, 19 Dec 2025 12:18:04 -0500 Subject: [PATCH 06/10] more lint --- src/components/Table/TableBody.tsx | 3 +-- .../workspace/members/WorkspaceMemberDetailsPage.tsx | 9 +++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/components/Table/TableBody.tsx b/src/components/Table/TableBody.tsx index 02fd25032776..f0069c3dd802 100644 --- a/src/components/Table/TableBody.tsx +++ b/src/components/Table/TableBody.tsx @@ -81,10 +81,9 @@ function TableBody({contentContainerStyle, ...props}: TableBodyProps) { ); return ( - // eslint-disable-next-line react/jsx-props-no-spreading data={filteredAndSortedData} diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx index 18000d1c8c3e..a1f8d1281ec0 100644 --- a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx +++ b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx @@ -405,6 +405,7 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM {memberCards.map((memberCard) => { const isCardDeleted = memberCard.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; const plaidUrl = getPlaidInstitutionIconUrl(memberCard?.bank); + const unapprovedExpenseLimit = memberCard.nameValuePairs?.unapprovedExpenseLimit; return ( Date: Fri, 19 Dec 2025 12:25:39 -0500 Subject: [PATCH 07/10] prettier --- .../workspace/companyCards/WorkspaceCompanyCardsTableItem.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/companyCards/WorkspaceCompanyCardsTableItem.tsx b/src/pages/workspace/companyCards/WorkspaceCompanyCardsTableItem.tsx index 45f4b7d41621..46f54f9db9ff 100644 --- a/src/pages/workspace/companyCards/WorkspaceCompanyCardsTableItem.tsx +++ b/src/pages/workspace/companyCards/WorkspaceCompanyCardsTableItem.tsx @@ -97,7 +97,7 @@ function WorkspaceCompanyCardTableItem({ const companyCardFeedIcons = useCompanyCardFeedIcons(); const Expensicons = useMemoizedLazyExpensifyIcons(['ArrowRight']); - const cardFeedIcon = !plaidIconUrl && getCardFeedIcon(selectedFeed as CompanyCardFeed, illustrations, companyCardFeedIcons) : null; + const cardFeedIcon = !plaidIconUrl && getCardFeedIcon(selectedFeed as CompanyCardFeed, illustrations, companyCardFeedIcons); const {failedCompanyCardAssignment} = item; let {cardName, customCardName, cardholder, assignedCard, isAssigned, isCardDeleted} = item; From 737914f6272f1592ace98f33a1e0d351c844e600 Mon Sep 17 00:00:00 2001 From: Carlos Miceli Date: Fri, 19 Dec 2025 12:50:14 -0500 Subject: [PATCH 08/10] more lint --- .../members/WorkspaceMemberDetailsPage.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx index a1f8d1281ec0..a20649c3c27a 100644 --- a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx +++ b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx @@ -405,11 +405,13 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM {memberCards.map((memberCard) => { const isCardDeleted = memberCard.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; const plaidUrl = getPlaidInstitutionIconUrl(memberCard?.bank); - const unapprovedExpenseLimit = memberCard.nameValuePairs?.unapprovedExpenseLimit; + const nameValuePairs = memberCard.nameValuePairs; + const unapprovedExpenseLimit = nameValuePairs?.unapprovedExpenseLimit; + const cardTitle = nameValuePairs?.cardTitle; return ( Date: Fri, 19 Dec 2025 12:55:29 -0500 Subject: [PATCH 09/10] lintttt --- src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx index a20649c3c27a..ef12d80733a8 100644 --- a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx +++ b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx @@ -68,6 +68,10 @@ type WorkspaceMemberDetailsPageProps = Omit; +function isNameValuePairsObject(value: unknown): value is Record { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceMemberDetailsPageProps) { const policyID = route.params.policyID; const workspaceAccountID = policy?.workspaceAccountID ?? CONST.DEFAULT_NUMBER_ID; @@ -405,7 +409,7 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM {memberCards.map((memberCard) => { const isCardDeleted = memberCard.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; const plaidUrl = getPlaidInstitutionIconUrl(memberCard?.bank); - const nameValuePairs = memberCard.nameValuePairs; + const nameValuePairs = isNameValuePairsObject(memberCard.nameValuePairs) ? memberCard.nameValuePairs : null; const unapprovedExpenseLimit = nameValuePairs?.unapprovedExpenseLimit; const cardTitle = nameValuePairs?.cardTitle; From 4bbcb4f7f1b1aa822060db128e79e44efff5c7df Mon Sep 17 00:00:00 2001 From: Carlos Miceli Date: Fri, 19 Dec 2025 12:58:20 -0500 Subject: [PATCH 10/10] final prettier --- src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx index ef12d80733a8..0cc69913064d 100644 --- a/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx +++ b/src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx @@ -422,11 +422,7 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM >