1import * as React from 'react' 2import * as WalletsGen from '../../actions/wallets-gen' 3import * as Constants from '../../constants/wallets' 4import * as Container from '../../util/container' 5import * as Types from '../../constants/types/wallets' 6import {anyErrors} from '../../constants/waiting' 7import Onboarding from '.' 8 9type OwnProps = { 10 nextScreen: Types.NextScreenAfterAcceptance 11} 12 13const ConnectedOnboarding = Container.connect( 14 state => { 15 const error = anyErrors(state, Constants.acceptDisclaimerWaitingKey) 16 const {acceptingDisclaimerDelay} = state.wallets 17 return { 18 acceptDisclaimerError: error && error.message ? error.message : '', 19 acceptingDisclaimerDelay: acceptingDisclaimerDelay, 20 } 21 }, 22 dispatch => ({ 23 onAcceptDisclaimer: () => dispatch(WalletsGen.createAcceptDisclaimer()), 24 onCheckDisclaimer: (nextScreen: Types.NextScreenAfterAcceptance) => 25 dispatch(WalletsGen.createCheckDisclaimer({nextScreen})), 26 onClose: () => dispatch(WalletsGen.createRejectDisclaimer()), 27 }), 28 (stateProps, dispatchProps, ownProps: OwnProps) => ({ 29 acceptDisclaimerError: stateProps.acceptDisclaimerError, 30 acceptingDisclaimerDelay: stateProps.acceptingDisclaimerDelay, 31 nextScreen: ownProps.nextScreen, 32 onAcceptDisclaimer: dispatchProps.onAcceptDisclaimer, 33 onCheckDisclaimer: dispatchProps.onCheckDisclaimer, 34 onClose: dispatchProps.onClose, 35 }) 36)(Onboarding) 37 38// A wrapper to harmonize the type of OwnProps between the 39// routed case and <Onboarding /> case. 40type RoutedOnboardingProps = Container.RouteProps<OwnProps> 41export const RoutedOnboarding = (ownProps: RoutedOnboardingProps) => ( 42 <ConnectedOnboarding nextScreen={Container.getRouteProps(ownProps, 'nextScreen', 'openWallet')} /> 43) 44 45export default ConnectedOnboarding 46