import BigNumber from 'bignumber.js' import React from 'react' import { useTranslation } from 'react-i18next' import { StyleSheet, Text, View } from 'react-native' import AppAnalytics from 'src/analytics/AppAnalytics' import { HomeEvents } from 'src/analytics/Events' import TokenDisplay from 'src/components/TokenDisplay' import Touchable from 'src/components/Touchable' import { navigate } from 'src/navigator/NavigationService' import { Screens } from 'src/navigator/Screens' import colors from 'src/styles/colors' import { typeScale } from 'src/styles/fonts' import { Spacing } from 'src/styles/styles' import variables from 'src/styles/variables' import { useTokenInfo } from 'src/tokens/hooks' import TransactionFeedItemImage from 'src/transactions/feed/TransactionFeedItemImage' import { TokenExchange, TokenTransactionTypeV2 } from 'src/transactions/types' interface Props { transaction: TokenExchange } function SwapFeedItem({ transaction }: Props) { const { t } = useTranslation() const incomingTokenInfo = useTokenInfo(transaction.inAmount.tokenId) const outgoingTokenInfo = useTokenInfo(transaction.outAmount.tokenId) const handleOpenTransactionDetails = () => { navigate(Screens.TransactionDetailsScreen, { transaction: transaction }) AppAnalytics.track(HomeEvents.transaction_feed_item_select, { itemType: transaction.type, }) } const isCrossChainSwap = transaction.type === TokenTransactionTypeV2.CrossChainSwapTransaction return ( {t('swapScreen.title')} {isCrossChainSwap ? t('transactionFeed.crossChainSwapTransactionLabel') : t('feedItemSwapPath', { token1: outgoingTokenInfo?.symbol, token2: incomingTokenInfo?.symbol, })} { // for cross chain swaps specifically, the inAmount value is empty // until the transaction is completed on the destination network !new BigNumber(transaction.inAmount.value).isNaN() && ( ) } ) } const styles = StyleSheet.create({ container: { flexDirection: 'row', alignItems: 'center', flex: 1, paddingVertical: Spacing.Small12, paddingHorizontal: variables.contentPadding, }, contentContainer: { flex: 1, paddingHorizontal: variables.contentPadding, }, title: { ...typeScale.labelMedium, }, subtitle: { ...typeScale.bodySmall, color: colors.contentSecondary, }, tokenAmountContainer: { maxWidth: '50%', }, amount: { ...typeScale.labelMedium, color: colors.accent, flexWrap: 'wrap', textAlign: 'right', }, tokenAmount: { ...typeScale.bodySmall, color: colors.contentSecondary, flexWrap: 'wrap', textAlign: 'right', }, }) export default SwapFeedItem