diff --git a/src/components/ReportActionItem/IssueCardMessage.tsx b/src/components/ReportActionItem/IssueCardMessage.tsx index f0e22c9a731b..beec4292d93b 100644 --- a/src/components/ReportActionItem/IssueCardMessage.tsx +++ b/src/components/ReportActionItem/IssueCardMessage.tsx @@ -6,8 +6,8 @@ import RenderHTML from '@components/RenderHTML'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; -import * as PolicyUtils from '@libs/PolicyUtils'; -import * as ReportActionsUtils from '@libs/ReportActionsUtils'; +import {getPolicy, getWorkspaceAccountID, isPolicyAdmin} from '@libs/PolicyUtils'; +import {getCardIssuedMessage, getOriginalMessage, isActionOfType, shouldShowAddMissingDetails} from '@libs/ReportActionsUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -23,42 +23,27 @@ type IssueCardMessageProps = { function IssueCardMessage({action, policyID}: IssueCardMessageProps) { const {translate} = useLocalize(); 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 [session] = useOnyx(ONYXKEYS.SESSION); const [cardsList] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`); - - const assigneeAccountID = (ReportActionsUtils.getOriginalMessage(action) as IssueNewCardOriginalMessage)?.assigneeAccountID; - - const missingDetails = - !privatePersonalDetails?.legalFirstName || - !privatePersonalDetails?.legalLastName || - !privatePersonalDetails?.dob || - !privatePersonalDetails?.phoneNumber || - isEmptyObject(privatePersonalDetails?.addresses) || - privatePersonalDetails.addresses.length === 0; - - const isAssigneeCurrentUser = !isEmptyObject(session) && session.accountID === assigneeAccountID; - - const cardIssuedActionOriginalMessage = ReportActionsUtils.isActionOfType( + const assigneeAccountID = (getOriginalMessage(action) as IssueNewCardOriginalMessage)?.assigneeAccountID; + 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 card = isPolicyAdmin ? cardsList?.[cardID] : cardList[cardID]; - const shouldShowAddMissingDetailsButton = !isEmptyObject(card) && action?.actionName === CONST.REPORT.ACTIONS.TYPE.CARD_MISSING_ADDRESS && missingDetails && isAssigneeCurrentUser; + const cardID = cardIssuedActionOriginalMessage?.cardID ?? CONST.DEFAULT_NUMBER_ID; + const card = isPolicyAdmin(getPolicy(policyID)) ? cardsList?.[cardID] : cardList[cardID]; + const isAssigneeCurrentUser = !isEmptyObject(session) && session.accountID === assigneeAccountID; + const shouldShowAddMissingDetailsButton = isAssigneeCurrentUser && shouldShowAddMissingDetails(action?.actionName, card); return ( <> - ${ReportActionsUtils.getCardIssuedMessage({reportAction: action, shouldRenderHTML: true, policyID, shouldDisplayLinkToCard: !!card})}`} - /> + ${getCardIssuedMessage({reportAction: action, shouldRenderHTML: true, policyID, card})}`} /> {shouldShowAddMissingDetailsButton && (