import { FiatAccountType } from '@fiatconnect/fiatconnect-types' import { RouteProp } from '@react-navigation/native' import { NativeStackScreenProps } from '@react-navigation/native-stack' import React from 'react' import { Trans, useTranslation } from 'react-i18next' import { SafeAreaView, StyleSheet, Text } from 'react-native' import AppAnalytics from 'src/analytics/AppAnalytics' import { FiatExchangeEvents } from 'src/analytics/Events' import BackButton from 'src/components/BackButton' import Button, { BtnSizes, BtnTypes } from 'src/components/Button' import FiatConnectQuote from 'src/fiatExchanges/quotes/FiatConnectQuote' import { CICOFlow } from 'src/fiatExchanges/types' import i18n from 'src/i18n' import { emptyHeader } from 'src/navigator/Headers' import { navigate } from 'src/navigator/NavigationService' import { Screens } from 'src/navigator/Screens' import { StackParamList } from 'src/navigator/types' import { typeScale } from 'src/styles/fonts' type Props = NativeStackScreenProps interface LinkAccountScreenTranslationKeys { bodyTitle: string description: string header: string } /** * Small helper function to map the account type to its name used in the base translation * file. */ export function getTranslationStrings( accountType: FiatAccountType ): LinkAccountScreenTranslationKeys { return { [FiatAccountType.BankAccount]: { bodyTitle: 'fiatConnectLinkAccountScreen.bankAccount.bodyTitle', description: 'fiatConnectLinkAccountScreen.bankAccount.description', header: 'fiatConnectLinkAccountScreen.bankAccount.header', }, [FiatAccountType.DuniaWallet]: { bodyTitle: 'fiatConnectLinkAccountScreen.duniaWallet.bodyTitle', description: 'fiatConnectLinkAccountScreen.duniaWallet.description', header: 'fiatConnectLinkAccountScreen.duniaWallet.header', }, [FiatAccountType.MobileMoney]: { bodyTitle: 'fiatConnectLinkAccountScreen.mobileMoney.bodyTitle', description: 'fiatConnectLinkAccountScreen.mobileMoney.description', header: 'fiatConnectLinkAccountScreen.mobileMoney.header', }, }[accountType] } export default function FiatConnectLinkAccountScreen({ route }: Props) { const { quote, flow } = route.params return } export function LinkAccountSection(props: { quote: FiatConnectQuote flow: CICOFlow disabled?: boolean }) { const { t } = useTranslation() const { quote, flow, disabled } = props const { bodyTitle, description } = getTranslationStrings(quote.getFiatAccountType()) const onPressContinue = () => { AppAnalytics.track(FiatExchangeEvents.cico_fc_link_account_continue, { flow, provider: quote.getProviderId(), fiatAccountSchema: quote.getFiatAccountSchema(), }) navigate(Screens.FiatDetailsScreen, { quote, flow }) } const onPressProvider = () => { AppAnalytics.track(FiatExchangeEvents.cico_fc_link_account_provider_website, { flow, provider: quote.getProviderId(), fiatAccountSchema: quote.getFiatAccountSchema(), page: 'home', }) navigate(Screens.WebViewScreen, { uri: quote.getProviderWebsiteUrl() }) } const onPressTermsAndConditions = () => { AppAnalytics.track(FiatExchangeEvents.cico_fc_link_account_provider_website, { flow, provider: quote.getProviderId(), fiatAccountSchema: quote.getFiatAccountSchema(), page: 'termsAndConditions', }) navigate(Screens.WebViewScreen, { uri: quote.getProviderTermsAndConditionsUrl() }) } const onPressPrivacyPolicy = () => { AppAnalytics.track(FiatExchangeEvents.cico_fc_link_account_provider_website, { flow, provider: quote.getProviderId(), fiatAccountSchema: quote.getFiatAccountSchema(), page: 'privacyPolicy', }) navigate(Screens.WebViewScreen, { uri: quote.getProviderPrivacyPolicyUrl() }) } return ( {t(bodyTitle)}