import * as React from 'react' import { Trans, WithTranslation } from 'react-i18next' import { Platform, ScrollView, StyleSheet, Text } from 'react-native' import { SafeAreaInsetsContext, SafeAreaView } from 'react-native-safe-area-context' import { connect } from 'react-redux' import { acceptTerms } from 'src/account/actions' import { recoveringFromStoreWipeSelector } from 'src/account/selectors' import AppAnalytics from 'src/analytics/AppAnalytics' import { OnboardingEvents } from 'src/analytics/Events' import Button, { BtnSizes, BtnTypes } from 'src/components/Button' import DevSkipButton from 'src/components/DevSkipButton' import { withTranslation } from 'src/i18n' import Logo from 'src/images/Logo' import { nuxNavigationOptions } from 'src/navigator/Headers' import { navigate } from 'src/navigator/NavigationService' import { Screens } from 'src/navigator/Screens' import { firstOnboardingScreen } from 'src/onboarding/steps' import { RootState } from 'src/redux/reducers' import { getDynamicConfigParams, getFeatureGate } from 'src/statsig' import { DynamicConfigs } from 'src/statsig/constants' import { StatsigDynamicConfigs, StatsigFeatureGates } from 'src/statsig/types' import Colors from 'src/styles/colors' import { typeScale } from 'src/styles/fonts' import { navigateToURI } from 'src/utils/linking' const MARGIN = 24 interface DispatchProps { acceptTerms: typeof acceptTerms } interface StateProps { recoveringFromStoreWipe: boolean } const mapDispatchToProps: DispatchProps = { acceptTerms, } const mapStateToProps = (state: RootState) => ({ recoveringFromStoreWipe: recoveringFromStoreWipeSelector(state), }) type Props = WithTranslation & DispatchProps & StateProps export class RegulatoryTerms extends React.Component { static navigationOptions = { ...nuxNavigationOptions, ...Platform.select({ ios: { animation: 'slide_from_bottom' }, }), } links = getDynamicConfigParams(DynamicConfigs[StatsigDynamicConfigs.APP_CONFIG]).links onPressAccept = () => { AppAnalytics.track(OnboardingEvents.terms_and_conditions_accepted) this.props.acceptTerms() this.startOnboarding() } startOnboarding = () => { navigate( firstOnboardingScreen({ recoveringFromStoreWipe: this.props.recoveringFromStoreWipe, }) ) } onPressGoToTerms = () => { navigateToURI(this.links.tos) } onPressGoToPrivacyPolicy = () => { navigateToURI(this.links.privacy) } renderTerms() { const { t } = this.props const pointsEnabled = getFeatureGate(StatsigFeatureGates.SHOW_POINTS) return ( {t('terms.title')} {t('terms.heading1')} {t('terms.heading2')} {pointsEnabled ? t('terms.goldDisclaimerWithPoints') : t('terms.goldDisclaimer')} ) } render() { const { t } = this.props return ( {this.renderTerms()} {(insets) => (