import React, { Component } from 'react'; import { StyleSheet, Text, View, Image, ScrollView } from 'react-native'; import PropTypes from 'prop-types'; import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome'; import Icon from 'react-native-vector-icons/MaterialIcons'; import { responsiveHeight, responsiveWidth, responsiveFontSize } from 'react-native-responsive-dimensions'; import { Fumi, Kaede } from 'react-native-textinput-effects' import * as Animatable from 'react-native-animatable' import Button from 'apsl-react-native-button' import { categoryChild } from './../../webservice/AuthApi' let theme = require('./../../utils/theme.json') let route = require('./../../route.json') import I18n from 'react-native-i18n'; export default class CreateAccount extends Component { static navigatorStyle = { drawUnderNavBar: true, navBarHidden: true, drawUnderStatusBar: false, statusBarHidden: true, statusBarTextColorScheme: 'light', }; static options(passProps) { return { topBar: { visible: false, enabled: false, drawBehind: true, }, statusBar: { drawBehind: true, enabled: false, } } } constructor(props) { super(props); this.state = this.initState(); const { navigation } = this.props; this.type = navigation.getParam('type', 0); } initState() { return { password: null, enterPhone: null, nameanim: null, surnameanim: null, passwordanim: null, confirmpassanim: null, isLoging: false, snackVisible: false, snackText: '', user: { category: this.type === 0 ? 'user' : 'geolocated' } } } render() { return this.type === 1 ? this.renderUserGeoAccount() : this.renderUserAccount() } renderUserGeoAccount() { return ( this.props.navigation.pop()} /> {I18n.t('TEXT_BIG_CREATE_AGENT_1')} {I18n.t('TEXT_SUBTITLE_CREATE_1')} { this.nameanim = comp }}> { let use = this.state.user; use.lastname = text; this.setState({ user: use }) }} style={styles.input} > { this.surnameanim = comp }}> { let use = this.state.user; use.address = text; this.setState({ user: use }) }} > { this.mailanim = comp }}> { let use = this.state.user; use.email = text; this.setState({ user: use }) }} style={styles.input} > { this.memberanim = comp }}> { let use = this.state.user; use.member = text; this.setState({ user: use }) }} iconSize={20} style={styles.input} > { this.passanim = comp }}> { let use = this.state.user; use.password = text; this.setState({ user: use }) }} iconSize={20} style={styles.input} > { this.confirmanim = comp }}> { let use = this.state.user; use.confirmpass = text; this.setState({ user: use }) }} iconSize={20} style={styles.input} > ) } renderUserAccount() { return ( this.props.navigation.pop()} /> {I18n.t('TEXT_BIG_CREATE_1')} {I18n.t('TEXT_SUBTITLE_CREATE_1')} { this.nameanim = comp }}> { let use = this.state.user; use.lastname = text; this.setState({ user: use }) }} iconColor={'#f95a25'} iconSize={20} style={styles.input} > { this.surnameanim = comp }}> { let use = this.state.user; use.address = text; this.setState({ user: use }) }} style={styles.input} > { this.mailanim = comp }}> { let use = this.state.user; use.email = text; this.setState({ user: use }) }} style={styles.input} > { this.passanim = comp }}> { let use = this.state.user; use.password = text; this.setState({ user: use }) }} style={styles.input} > { this.confirmanim = comp }}> { let use = this.state.user; use.confirmpass = text; this.setState({ user: use }) }} style={styles.input} > ) } _onUserCreateAccount() { let { user } = this.state; console.log(user) if (user !== undefined) { if (this.checkOrShake(user.lastname, this.nameanim)) { if (this.checkOrShake(user.address, this.surnameanim)) { if (this.checkOrShake(user.email, this.mailanim)) { if (this.checkOrShake(user.password, this.passanim)) { if (this.checkOrShake(user.confirmpass, this.confirmanim)) { if (user.confirmpass === user.password) { this.props.navigation.push(route.creationstep2, { type: this.type, user: user }) } else { this.passanim.shake(800) this.confirmanim.shake(800) } } } } } } } else { /*this.props.navigator.showSnackbar({ text:"impossible de trouvé l'utilisateur" }) console.log(user) */} } checkUserGeolocated() { let { user } = this.state; this.setState({ isLoging: true }) if (user !== undefined) { if (this.checkOrShake(user.lastname, this.nameanim)) { if (this.checkOrShake(user.address, this.surnameanim)) { if (this.checkOrShake(user.email, this.mailanim)) { if (this.checkOrShake(user.member, this.memberanim)) { categoryChild(user.member).then((codes) => { if (codes !== undefined && codes !== null && codes.child !== undefined) { let user = this.state.user; user.category = codes.child; this.setState({ user: user }) } this.setState({ isLoging: false }) if (this.checkOrShake(user.password, this.passanim)) { if (this.checkOrShake(user.confirmpass, this.confirmanim)) { if (user.password === user.confirmpass) { this.props.navigation.push(route.creationstep2, { type: this.type, user: user }) } else { this.passanim.shake(800) this.confirmanim.shake(800) this.setState({ isLoging: false }) } } else { this.setState({ isLoging: false }) } } else this.setState({ isLoging: false }) }).catch((e) => { this.setState({ isLoging: false }) }) } else this.setState({ isLoging: false }) } else this.setState({ isLoging: false }) } else this.setState({ isLoging: false }) } else this.setState({ isLoging: false }) } else { this.setState({ isLoging: false }) /*this.props.navigator.showSnackbar({ text:"impossible de trouvé la variable user" })*/ console.log(user) } } checkOrShake(champ, view) { let res = false; if (champ !== undefined && champ.length > 0) { res = true; } else { view.shake(800) } return res; } } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: theme.primaryDark, }, textbtnvalide: { color: 'white', fontWeight: 'bold' }, bigtitle: { color: 'white', fontSize: 20, flex: 1, fontWeight: 'bold', textAlign: 'center', margin: 20, }, subbigtitle: { color: 'white', fontSize: 17, textAlign: 'center', margin: 5, }, btnvalide: { marginTop: 20, marginLeft: 20, marginRight: 20, borderColor: 'transparent', backgroundColor: theme.accentLight, height: 52 }, input: { height: 60, marginTop: responsiveHeight(2), marginLeft: responsiveWidth(5), marginRight: responsiveWidth(5), borderRadius: 5, } })