import React from 'react' import { useTranslation } from 'react-i18next' import { StyleSheet, Text } from 'react-native' import AppAnalytics from 'src/analytics/AppAnalytics' import { TransactionDetailsEvents } from 'src/analytics/Events' import Touchable from 'src/components/Touchable' import OpenLinkIcon from 'src/icons/OpenLinkIcon' import Colors from 'src/styles/colors' import { typeScale } from 'src/styles/fonts' import { Spacing } from 'src/styles/styles' import { TokenTransactionTypeV2, TransactionStatus } from 'src/transactions/types' interface Props { status: TransactionStatus type: TokenTransactionTypeV2 onPress: () => void testID?: string } function TransactionPrimaryAction({ status, type, onPress, testID }: Props) { const { t } = useTranslation() const title = { [TransactionStatus.Complete]: t('transactionDetailsActions.showCompletedTransactionDetails'), [TransactionStatus.Pending]: t('transactionDetailsActions.checkPendingTransactionStatus'), [TransactionStatus.Failed]: t('transactionDetailsActions.retryFailedTransaction'), }[status] const [color, backgroundColor] = { [TransactionStatus.Complete]: [Colors.successPrimary, Colors.successSecondary], [TransactionStatus.Pending]: [Colors.warningPrimary, Colors.warningSecondary], [TransactionStatus.Failed]: [Colors.errorPrimary, Colors.errorSecondary], }[status] const icon = { [TransactionStatus.Complete]: , [TransactionStatus.Pending]: , [TransactionStatus.Failed]: null, }[status] const analyticsEvent = { [TransactionStatus.Complete]: TransactionDetailsEvents.transaction_details_tap_check_status, [TransactionStatus.Pending]: TransactionDetailsEvents.transaction_details_tap_details, [TransactionStatus.Failed]: TransactionDetailsEvents.transaction_details_tap_retry, }[status] const pressHandler = () => { AppAnalytics.track(analyticsEvent, { transactionType: type, transactionStatus: status, }) onPress() } return ( <> {title} {icon} ) } const styles = StyleSheet.create({ container: { flexDirection: 'row', justifyContent: 'center', alignItems: 'center', padding: Spacing.Smallest8, borderRadius: 100, gap: 6, }, text: { ...typeScale.labelXSmall, }, }) export default TransactionPrimaryAction