From 854a7d8f8526e8142c416ec41682468e87bcbbd2 Mon Sep 17 00:00:00 2001 From: Ashm Walia <40498934+ashmgarv@users.noreply.github.com> Date: Tue, 13 Oct 2020 10:24:59 -0700 Subject: [TMA - 238] Added invitation code verification screen as the first onboarding screen (#46) * Added invitation code verification screen as the first onboarding screen * Changed screen order on some screens and a quick check on back navigation --- src/screens/onboarding/Checkpoint.tsx | 2 +- .../onboarding/InvitationCodeVerification.tsx | 210 +++++++++++++++++++++ src/screens/onboarding/Login.tsx | 2 +- src/screens/onboarding/RegistrationOne.tsx | 18 +- src/screens/onboarding/RegistrationThree.tsx | 18 +- src/screens/onboarding/RegistrationTwo.tsx | 4 +- src/screens/onboarding/Verification.tsx | 24 +-- src/screens/onboarding/index.ts | 1 + 8 files changed, 225 insertions(+), 54 deletions(-) create mode 100644 src/screens/onboarding/InvitationCodeVerification.tsx (limited to 'src/screens') diff --git a/src/screens/onboarding/Checkpoint.tsx b/src/screens/onboarding/Checkpoint.tsx index 83f330f1..8ef7f307 100644 --- a/src/screens/onboarding/Checkpoint.tsx +++ b/src/screens/onboarding/Checkpoint.tsx @@ -50,7 +50,7 @@ const Checkpoint: React.FC = ({route, navigation}) => { return ( - + You are registered! diff --git a/src/screens/onboarding/InvitationCodeVerification.tsx b/src/screens/onboarding/InvitationCodeVerification.tsx new file mode 100644 index 00000000..ae1c282f --- /dev/null +++ b/src/screens/onboarding/InvitationCodeVerification.tsx @@ -0,0 +1,210 @@ +import React from 'react'; +import {OnboardingStackParams} from '../../routes'; +import {StackNavigationProp} from '@react-navigation/stack'; + +import { + Background, + RegistrationWizard, + SubmitButton, + ArrowButton, + LoadingIndicator, +} from '../../components'; + +//TODO : +//import {VERIFY_INVITATION_CODE_ENDPOUNT} from "../../constants" + +import {Text} from 'react-native-animatable'; +import { + CodeField, + Cursor, + useBlurOnFulfill, + useClearByFocusCell, +} from 'react-native-confirmation-code-field'; +import { + StyleSheet, + View, + KeyboardAvoidingView, + Alert, + Platform, +} from 'react-native'; +import {trackPromise} from 'react-promise-tracker'; + +type InvitationCodeVerificationScreenNavigationProp = StackNavigationProp< + OnboardingStackParams, + 'InvitationCodeVerification' +>; + +interface InvitationCodeVerificationProps { + navigation: InvitationCodeVerificationScreenNavigationProp; +} + +/** + * InvitationCodeVerification screen to verify that the new user has been Invited + * @param navigation react-navigation navigation object + */ + +const InvitationCodeVerification: React.FC = ({ + navigation, +}) => { + const [value, setValue] = React.useState(''); + const ref = useBlurOnFulfill({value, cellCount: 6}); + const [valueProps, getCellOnLayoutHandler] = useClearByFocusCell({ + value, + setValue, + }); + + const handleInvitationCodeVerification = async () => { + //TODO : Verify the code + //The code would look somewhat like below + // try { + // let verifyInviteCodeResponse = await fetch(VERIFY_INVITATION_CODE_ENDPOUNT, { + // method: 'POST', + // body: JSON.stringify({ + // otp: value, + // }), + // }); + + // if (verifyInviteCodeResponse.status == 200) { + // navigation.navigate('RegistrationOne'); + // } else { + // Alert.alert( + // 'Invalid invitation code 🤔', + // ); + // } + // } catch (error) { + // Alert.alert( + // 'Verifiation failed 😓', + // 'Please double-check your network connection and retry.', + // ); + // return { + // name: 'Verification error', + // description: error, + // }; + // } + + navigation.navigate('RegistrationOne'); + }; + + const Footer = () => ( + + navigation.navigate('Login')} + /> + + ); + + return ( + + + + Enter 6 digit code + + Please enter the invitation code provided to you by us / your friend. + + ( + + + {symbol || (isFocused ? : null)} + + + )} + /> + + + +