/** * 带Public和PHV切换的注册页面V2 * @邠心vbe on 2023/02/01 */ import React from 'react'; import { View, Text, ScrollView, StyleSheet, TextInput, Pressable, Image } from 'react-native'; import { BackButton, BackIcon, Styles } from '../../components/Toolbar'; import apiUser from '../../api/apiUser'; import Button from '../../components/Button'; import { PageList } from '../Router'; import Dialog from '../../components/Dialog'; import Modal from 'react-native-modal'; import { RegisterDialog } from '../charge/InfoDialog'; import Dropdown from '../../components/Dropdown'; import ImagePicker from 'react-native-image-crop-picker'; import apiUpload from '../../api/apiUpload'; import { host } from '../../api/http'; import { ModalProps } from '../../components/BottomModal'; import { CountryDropNum, GetCountryList } from '../../components/CountryIcon'; import StrengthView from './StrengthView'; import CheckBox from '../../components/CheckBox'; import { UploadThemes } from '../../components/ThemesConfig'; import TextView from '../../components/TextView'; const options = { width: 300, height: 200, cropping: true, multiple: false, mediaType: 'photo', writeTempFile: false, compressImageQuality: 0.8, compressImageMaxWidth: 720, compressImageMaxHeight: 1280, ...UploadThemes } export default class RegisterV2 extends React.Component { constructor(props) { super(props); this.state = { agree: true, strength: 0, countryNum: '65', countryShow: false, userInfo: { email: "" }, countryNums: [], wrongCount: 0, params: {...this.props.route.params}, email: '', password: '', fleetCompanyId: '', visible: false, isFleetDriver: false, pdvImages: ['', ''], companyList: [] }; } componentDidMount() { //console.log(this.state.params); this.getCountryList(); this.getCompanyList(); } applyStrength(text) { StrengthView.V4.apply(text, strength => { if (this.state.strength != strength) { this.setState({ password: text, strength: strength }); } else { this.setState({ password: text }); } }); } changeInfo(key, value) { var info = this.state.userInfo; info[key] = value; this.setState({ 'userInfo': info }); } changeTab(type) { this.setState({ isFleetDriver: type }) } getCountryList() { GetCountryList(list => { this.setState({ countryNums: list }) }) } getCompanyList() { apiUser.getConmpany().then(res => { if (res.data) { this.setState({ companyList: res.data }) } }).catch(err => [ toastShort(err) ]) } onRegister() { //console.log('sign up', this.state); var info = this.state.userInfo; if (!info.nickName) { toastShort($t('sign.plsInputDiaplayName')); return; } if (!info.email) { toastShort($t('sign.plsInputEmail')); return; } if (!/^[a-zA-Z0-9]+[\S]+@[a-zA-Z0-9_-]+[\.][\Sa-zA-Z]+$/.test(info.email)) { toastShort($t('sign.errEmailFormat')); return; } if (!info.phone) { toastShort($t('sign.plsInputContactNo')); return; } if (!/^\d{6,15}$/.test(info.phone)) { toastShort($t('sign.errContactNoFormat')); return; } if (!this.state.password) { toastShort($t('sign.plsInputPassword')); return; } if (this.state.strength < StrengthView.V4.maxStrength) { toastShort($t('sign.errPasswordStrong')); return; } if (!info.password) { toastShort($t('sign.plsInputPassword2')); return; } if (info.password != this.state.password) { toastShort($t('sign.errPasswordConfirm')); if (this.state.wrongCount < 3) { this.setState({ wrongCount: this.state.wrongCount + 1 }) } return; } if (this.state.isFleetDriver) { if (!info.pdvLicence) { toastShort($t('sign.plsInputPDVLicence')); return; } if (this.state.pdvImages[0] == '' || this.state.pdvImages[1] == '') { toastShort($t('sign.plsUploadLicencePhotos')); return; } } let param = Object.assign({}, info); //param.phone = this.state.countryNum + info.phone param.callingCode = this.state.countryNum; if (this.state.isFleetDriver) { param.userType = 'Driver'; param.pdvLicencePictures = this.state.pdvImages; param.fleetCompanyId = this.state.fleetCompanyId; } else { param.userType = 'Public'; } console.log('params', param); Dialog.showProgressDialog(); apiUser.register(param).then(res => { Dialog.dismissLoading(); //toastShort('Sign up successfully!'); if (isIOS) { setTimeout(() => { this.setState({ email: param.email, visible: true }); }, 500); } else { this.setState({ email: param.email, visible: true }); } //this.backToLogin(); }).catch(err => { toastShort(err); Dialog.dismissLoading(); }); } getBackTopPosition() { return isIOS ? statusHeight - 16 : 8; } backToLogin() { if (this.state.params.actionLogin) { goBack() startPage(PageList.login); } else { goBack(); } } uploadImage(index) { ImagePicker.openPicker({ ...options, cropperToolbarTitle: $t('common.cropperTitle') }).then(image => { if (image.path) { apiUpload.uploadImage(image.path, image.mime, 'PDVL').then(res => { if (res.success && res.data.picturePath) { let imageUrl = this.state.pdvImages; imageUrl[index] = res.data.picturePath; this.setState({ pdvImages: imageUrl }); toastShort($t('common.uploadSuccess')); } else { toastShort($t('common.updateFailed')); } }).catch(err => { toastShort(err); }); } }).catch(err1 => { //console.log(err1); }); } changeAgree(ag) { this.setState({ agree: ag }) } hideDialog() { this.setState({ visible: false }); this.backToLogin(); } render() { return ( this.changeTab(false)} >Public Users this.changeTab(true)} >Fleet/PH Drivers {/* Registration */} {$t('sign.labelDisplayName')} this.changeInfo('nickName', v)} /> {$t('sign.labelEmail')} this.changeInfo('email', v)} /> {$t('sign.labelPhoneNumber')} {"+" + this.state.countryNum} { this.setState({ countryNum: value }) }} customerItemView={ (item, index, onClick) => }/> this.changeInfo('phone', v)} /> {$t('sign.labelCreatePassword')} { this.applyStrength(value); }} /> {$t('sign.labelConfirmPassword')} this.changeInfo('password', v)} /> { this.state.isFleetDriver && <> {$t('sign.labelYourCompany')} { this.setState({ fleetCompanyId: value }) }}/> {$t('sign.labelPDVLicence')} this.changeInfo('pdvLicence', v)} /> {$t('sign.labelPDVPhotos')} { this.state.pdvImages.map((item, index) => ( this.uploadImage(index)} url={item}/> )) } } Have a referral code? You'll get $5 Credit as registration bonus! Referral Code this.changeInfo('referralCode', v)} /> this.changeAgree(v)} /> this.changeAgree(!this.state.agree)}> {$t('sign.iHaveReadAndAgree')} startPage(PageList.condition)}>{$t('drawer.termsOfUse')} {' '} {$t('sign.linkAndLink')} startPage(PageList.privacy)}>{$t('drawer.privacyPolicy')} {$t('sign.linkAndLinkEnd')}