diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 9972c03d7b68..54129b4af5d0 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -192,7 +192,7 @@ const ROUTES = { }, SETTINGS_WALLET_CARD_GET_PHYSICAL_NAME: { route: 'settings/wallet/card/:domain/get-physical/name', - getRoute: (domain: string) => `settings/wallet/card/${domain}/get-physical/name` as const, + getRoute: (domain: string, backTo?: string) => getUrlWithBackToParam(`settings/wallet/card/${domain}/get-physical/name`, backTo), }, SETTINGS_WALLET_CARD_GET_PHYSICAL_PHONE: { route: 'settings/wallet/card/:domain/get-physical/phone', diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 362758c7a843..6689cadd47b4 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -195,7 +195,6 @@ const SCREENS = { DOMAIN_CARD: 'DomainCard', RESTRICTED_ACTION: 'RestrictedAction', REPORT_EXPORT: 'Report_Export', - MISSING_PERSONAL_DETAILS: 'MissingPersonalDetails', DEBUG: 'Debug', }, ONBOARDING_MODAL: { diff --git a/src/components/ReportActionItem/IssueCardMessage.tsx b/src/components/ReportActionItem/IssueCardMessage.tsx index dcf657137d58..0787ab0876cc 100644 --- a/src/components/ReportActionItem/IssueCardMessage.tsx +++ b/src/components/ReportActionItem/IssueCardMessage.tsx @@ -1,16 +1,16 @@ -import React from 'react'; +import React, {useCallback} from 'react'; import type {OnyxEntry} from 'react-native-onyx'; import {useOnyx} from 'react-native-onyx'; import Button from '@components/Button'; import RenderHTML from '@components/RenderHTML'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import {getUpdatedPrivatePersonalDetails, goToNextPhysicalCardRoute} from '@libs/GetPhysicalCardUtils'; import Navigation from '@libs/Navigation/Navigation'; -import * as PolicyUtils from '@libs/PolicyUtils'; -import * as ReportActionsUtils from '@libs/ReportActionsUtils'; +import {getPolicy, getWorkspaceAccountID, isPolicyAdmin as isPolicyAdminPolicyUtils} from '@libs/PolicyUtils'; +import {getCardIssuedMessage, getOriginalMessage, isActionOfType} from '@libs/ReportActionsUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES from '@src/ROUTES'; import type {ReportAction} from '@src/types/onyx'; import type {IssueNewCardOriginalMessage} from '@src/types/onyx/OriginalMessage'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; @@ -25,11 +25,12 @@ function IssueCardMessage({action, policyID}: IssueCardMessageProps) { const styles = useThemeStyles(); const [privatePersonalDetails] = useOnyx(ONYXKEYS.PRIVATE_PERSONAL_DETAILS); const [session] = useOnyx(ONYXKEYS.SESSION); - const workspaceAccountID = PolicyUtils.getWorkspaceAccountID(policyID ?? '-1'); + const workspaceAccountID = getWorkspaceAccountID(policyID); const [cardList = {}] = useOnyx(ONYXKEYS.CARD_LIST); const [cardsList] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`); + const [draftValues] = useOnyx(ONYXKEYS.FORMS.GET_PHYSICAL_CARD_FORM_DRAFT); - const assigneeAccountID = (ReportActionsUtils.getOriginalMessage(action) as IssueNewCardOriginalMessage)?.assigneeAccountID; + const assigneeAccountID = (getOriginalMessage(action) as IssueNewCardOriginalMessage)?.assigneeAccountID; const missingDetails = !privatePersonalDetails?.legalFirstName || @@ -41,25 +42,30 @@ function IssueCardMessage({action, policyID}: IssueCardMessageProps) { const isAssigneeCurrentUser = !isEmptyObject(session) && session.accountID === assigneeAccountID; - const cardIssuedActionOriginalMessage = ReportActionsUtils.isActionOfType( + const cardIssuedActionOriginalMessage = isActionOfType( action, CONST.REPORT.ACTIONS.TYPE.CARD_ISSUED, CONST.REPORT.ACTIONS.TYPE.CARD_ISSUED_VIRTUAL, CONST.REPORT.ACTIONS.TYPE.CARD_MISSING_ADDRESS, ) - ? ReportActionsUtils.getOriginalMessage(action) + ? getOriginalMessage(action) : undefined; - const cardID = cardIssuedActionOriginalMessage?.cardID ?? -1; - const isPolicyAdmin = PolicyUtils.isPolicyAdmin(PolicyUtils.getPolicy(policyID)); + const cardID = cardIssuedActionOriginalMessage?.cardID ?? CONST.DEFAULT_NUMBER_ID; + const isPolicyAdmin = isPolicyAdminPolicyUtils(getPolicy(policyID)); const card = isPolicyAdmin ? cardsList?.[cardID] : cardList[cardID]; const shouldShowAddMissingDetailsButton = !isEmptyObject(card) && action?.actionName === CONST.REPORT.ACTIONS.TYPE.CARD_MISSING_ADDRESS && missingDetails && isAssigneeCurrentUser; + const domain = cardList?.[cardID]?.domainName ?? ''; + const goToNextRoute = useCallback(() => { + goToNextPhysicalCardRoute(domain, getUpdatedPrivatePersonalDetails(draftValues, privatePersonalDetails), Navigation.getActiveRoute()); + }, [domain, draftValues, privatePersonalDetails]); + return ( <> - ${ReportActionsUtils.getCardIssuedMessage(action, true, policyID, !!card)}`} /> + ${getCardIssuedMessage(action, true, policyID, !!card)}`} /> {shouldShowAddMissingDetailsButton && (