diff --git a/src/CONST.ts b/src/CONST.ts index d929a01e030a..1e161b7ece64 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -682,6 +682,9 @@ const CONST = { ACTIONABLE_TRACK_EXPENSE_WHISPER: 'ACTIONABLETRACKEXPENSEWHISPER', ADD_COMMENT: 'ADDCOMMENT', APPROVED: 'APPROVED', + CARD_MISSING_ADDRESS: 'CARDMISSINGADDRESS', + CARD_ISSUED: 'CARDISSUED', + CARD_ISSUED_VIRTUAL: 'CARDISSUEDVIRTUAL', CHANGE_FIELD: 'CHANGEFIELD', // OldDot Action CHANGE_POLICY: 'CHANGEPOLICY', // OldDot Action CHANGE_TYPE: 'CHANGETYPE', // OldDot Action diff --git a/src/components/ReportActionItem/IssueCardMessage.tsx b/src/components/ReportActionItem/IssueCardMessage.tsx new file mode 100644 index 000000000000..292b010cd851 --- /dev/null +++ b/src/components/ReportActionItem/IssueCardMessage.tsx @@ -0,0 +1,66 @@ +import React 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 useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; +import useEnvironment from '@hooks/useEnvironment'; +import useLocalize from '@hooks/useLocalize'; +import useThemeStyles from '@hooks/useThemeStyles'; +import Navigation from '@libs/Navigation/Navigation'; +import CONST from '@src/CONST'; +import ONYXKEYS from '@src/ONYXKEYS'; +import ROUTES from '@src/ROUTES'; +import type {ReportAction} from '@src/types/onyx'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; + +type IssueCardMessageProps = { + action: OnyxEntry; +}; + +function IssueCardMessage({action}: IssueCardMessageProps) { + const {translate} = useLocalize(); + const styles = useThemeStyles(); + const {environmentURL} = useEnvironment(); + // TODO: now mocking accountID with current user accountID instead of action.message.assigneeAccountID + const personalData = useCurrentUserPersonalDetails(); + const [privatePersonalDetails] = useOnyx(ONYXKEYS.PRIVATE_PERSONAL_DETAILS); + + // TODO: now mocking accountID with current user accountID instead of action.message.assigneeAccountID + const assignee = ``; + const link = `${translate('cardPage.expensifyCard')}`; + + const noMailingAddress = action?.actionName === CONST.REPORT.ACTIONS.TYPE.CARD_MISSING_ADDRESS && isEmptyObject(privatePersonalDetails?.address); + + const getTranslation = () => { + switch (action?.actionName) { + case CONST.REPORT.ACTIONS.TYPE.CARD_ISSUED: + return translate('workspace.expensifyCard.issuedCard', assignee); + case CONST.REPORT.ACTIONS.TYPE.CARD_ISSUED_VIRTUAL: + return translate('workspace.expensifyCard.issuedCardVirtual', {assignee, link}); + case CONST.REPORT.ACTIONS.TYPE.CARD_MISSING_ADDRESS: + return translate(`workspace.expensifyCard.${noMailingAddress ? 'issuedCardNoMailingAddress' : 'addedAddress'}`, assignee); + default: + return ''; + } + }; + + return ( + <> + ${getTranslation()}`} /> + {noMailingAddress && ( +