| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import { View, Text, StyleSheet, ActivityIndicator } from 'react-native';
- import NormalInput from '../../../global/normal_input';
- import NormalButton from '../../../global/normal_button';
- import { useState } from 'react';
- import SingleSelectButtonGroup from '../../../global/select_button';
- import useSignUpStore from '../../../../providers/signup_form_store';
- import PhoneInput from '../../../global/phone_input';
- import { authenticationService } from '../../../../service/authService';
- import { Alert } from 'react-native';
- import useVehicleStore from '../../../../providers/vehicle_store';
- type CreateWalletProps = {
- goToNextPage: () => void;
- };
- const creditCard = '信用卡';
- const weChatAliPay = '微信支付/支付寶';
- const CreateWallet: React.FC<CreateWalletProps> = ({ goToNextPage }) => {
- const options = [{ label: creditCard }, { label: weChatAliPay }];
- const [isLoading, setIsLoading] = useState(false);
- const [isLoading2, setIsLoading2] = useState(false);
- const { signUpFormData, setSignUpFormData } = useSignUpStore();
- const {
- vehicleBrand,
- vehicleModel,
- BrandID,
- ModelID,
- licensePlate,
- setVehicleBrand,
- setVehicleModel,
- setBrandID,
- setModelID,
- setLicensePlate
- } = useVehicleStore();
- const handleSelectedChange = (selectedLabel: string) => {
- setSignUpFormData({ ...signUpFormData, paymentMethod: selectedLabel });
- setError('');
- };
- const handleNextWithSkip = async () => {
- setIsLoading2(true);
- try {
- const result = await authenticationService.signUp(customerData);
- console.log('handleNextWithSkip in CreateWallet Page, i am sending this customerData', customerData);
- if (result === true) {
- goToNextPage();
- } else {
- Alert.alert('註冊錯誤', '註冊過程中出現錯誤,請稍後再試');
- }
- } catch (error) {
- console.error('Sign up error:', error);
- setError('註冊過程中出現錯誤,請稍後再試。');
- } finally {
- setIsLoading2(false);
- }
- };
- const handleNext = async () => {
- if (signUpFormData.paymentMethod === '' || signUpFormData.phone === '') {
- setError('請確保所有資料都已填寫。');
- } else {
- setError('');
- setIsLoading(true);
- try {
- const result = await authenticationService.signUp(customerData);
- console.log('handleNext in CreateWallet Page, i am sending this customerData', customerData);
- if (result) {
- goToNextPage();
- } else {
- Alert.alert('註冊錯誤', '註冊過程中出現錯誤,請稍後再試');
- }
- } catch (error) {
- setError('註冊過程中出現錯誤,請稍後再試。');
- console.error('Sign up error:', error);
- } finally {
- setIsLoading(false);
- }
- }
- };
- const selectLabelShown = () => {
- if (signUpFormData.paymentMethod == null) {
- return null;
- } else if (signUpFormData.paymentMethod == creditCard) {
- return creditCard;
- } else if (signUpFormData.paymentMethod == weChatAliPay) {
- return weChatAliPay;
- }
- };
- const phoneFieldPlaceholder = signUpFormData.phone ? signUpFormData.phone : '輸入電話號碼';
- const [error, setError] = useState('');
- let customerData = {
- customerBaseInfo: {
- name: signUpFormData.nickName.trim(),
- email: signUpFormData.email,
- password: signUpFormData.password,
- gender: signUpFormData.gender,
- birthday: signUpFormData.birthDateDay + '/' + signUpFormData.birthDateMonth + '/11',
- address: signUpFormData.address,
- phone: parseInt(signUpFormData.phone, 10),
- isUberDriver: signUpFormData.isUberDriver
- },
- customerCarInfo: {
- type_id: ModelID,
- brand_id: BrandID,
- licensePlate: signUpFormData.licensePlate
- }
- };
- return (
- <>
- <View style={styles.container}>
- <Text style={styles.text}>請填妥以下資料</Text>
- <View
- style={{
- display: 'flex',
- flexDirection: 'column',
- gap: 10
- }}
- >
- <PhoneInput
- value={signUpFormData.phone}
- onChangeText={(phone) => {
- setSignUpFormData({
- ...signUpFormData,
- phone: phone
- });
- }}
- placeholder={phoneFieldPlaceholder}
- />
- <SingleSelectButtonGroup
- options={options}
- onSelectionChange={handleSelectedChange}
- selectedOption={selectLabelShown()}
- />
- </View>
- {error && <Text style={styles.errorMessage}>{error}</Text>}
- <View>
- <NormalButton
- title={isLoading ? <ActivityIndicator /> : <Text style={{ color: '#fff' }}>完成</Text>}
- onPress={handleNext}
- extendedStyle={{}}
- />
- {/* 收起按鈕 */}
- {/* <NormalButton
- title={isLoading2 ? <ActivityIndicator /> : <Text style={{ color: '#888888' }}>略過</Text>}
- onPress={handleNextWithSkip}
- extendedStyle={{ backgroundColor: 'transparent' }}
- buttonPressedStyle={{ backgroundColor: 'transparent' }}
- /> */}
- </View>
- </View>
- </>
- );
- };
- const styles = StyleSheet.create({
- container: {
- flex: 1,
- marginHorizontal: 20
- },
- text: {
- fontSize: 20,
- paddingBottom: 10
- },
- errorMessage: {
- fontSize: 14,
- color: '#ff0033',
- fontWeight: '400',
- marginLeft: 10,
- marginBottom: 10
- }
- });
- export default CreateWallet;
|