From 671cf08581bbcc9653d5f61165bd435e6c70d58a Mon Sep 17 00:00:00 2001 From: chirantha Date: Thu, 8 Dec 2022 08:42:33 +0530 Subject: [PATCH] Account Details --- src/screens/authentication/AccountDetails.tsx | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 src/screens/authentication/AccountDetails.tsx diff --git a/src/screens/authentication/AccountDetails.tsx b/src/screens/authentication/AccountDetails.tsx new file mode 100644 index 0000000..78b5c88 --- /dev/null +++ b/src/screens/authentication/AccountDetails.tsx @@ -0,0 +1,162 @@ +import React from 'react'; +import {NavigationProp, useNavigation} from '@react-navigation/native'; +import {StyleSheet, View} from 'react-native'; +import {useFormik} from 'formik'; +import * as yup from 'yup'; + +import {AuthenticationStackParamList} from '../../navigators/Authentication'; +import {Colors} from '../../Colors'; +import {TextInput} from '../../components/TextInput'; +import {Block} from '../../components/Button/Block'; +import {AuthenticationHeader} from './component/AuthenticationHeader'; +import {Picker} from '../../components/Picker'; +import {KeyboardAwareScrollView} from '../../components/KeyboardAwareScrollView'; + +import {District} from '../../../assets/data/District'; +import {useOnboarding} from '../../context/Onboarding'; + +type NavigationProps = NavigationProp< + AuthenticationStackParamList, + 'AccountDetails' +>; + +interface FormProps { + firstName: string; + lastName: string; + nic: string; + district: string; +} + +const validationSchema = yup.object({ + firstName: yup.string().trim().required(), + lastName: yup.string(), + nic: yup.string().trim().required(), + district: yup.string(), +}); + +const initialValues = { + firstName: '', + lastName: '', + nic: '', + district: '', +}; + +export const AccountDetails = () => { + const {navigate} = useNavigation(); + const {createUser} = useOnboarding(); + + const { + values, + errors, + isValid, + touched, + handleChange, + handleBlur, + handleSubmit, + setFieldValue, + setSubmitting, + isSubmitting, + } = useFormik({ + initialValues: initialValues, + validationSchema: validationSchema, + onSubmit: _values => submitAccountDetails(_values), + validateOnBlur: true, + validateOnChange: false, + }); + + const submitAccountDetails = async (form: FormProps) => { + setSubmitting(true); + const _user: Partial = { + ...form, + onboarding: 'AD', + }; + await createUser(_user); + navigate('VehicleDetails'); + setSubmitting(false); + }; + + return ( + + + + + + + + + + + ({label: _c, value: _c}))} + onSelect={_district => setFieldValue('district', _district)} + placeholderText={'Select'} + /> + + + + Continue + + + + + ); +}; + +const styles = StyleSheet.create({ + root: { + flex: 1, + backgroundColor: Colors.Primary.White, + }, + + container: { + padding: 24, + }, + + subtitle: { + marginTop: '5%', + }, + inputContainer: {marginTop: '10%'}, + button: {marginTop: '10%'}, +});