import React from 'react'; import {OnboardingStackParams} from '../../routes'; import {StackNavigationProp} from '@react-navigation/stack'; import { Background, RegistrationWizard, SubmitButton, ArrowButton, LoadingIndicator, } from '../../components'; import { TAGG_LIGHT_PURPLE, 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 {BackgroundGradientType} from '../../types'; import { ERROR_DOUBLE_CHECK_CONNECTION, ERROR_INVALID_INVITATION_CODE, ERROR_INVLAID_CODE, ERROR_VERIFICATION_FAILED_SHORT, } from '../../constants/strings'; 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 () => { if (value.length === 6) { try { let verifyInviteCodeResponse = await fetch( VERIFY_INVITATION_CODE_ENDPOUNT + value + '/', { method: 'DELETE', }, ); if (verifyInviteCodeResponse.status === 200) { navigation.navigate('RegistrationOne'); } else { Alert.alert(ERROR_INVALID_INVITATION_CODE); } } catch (error) { Alert.alert( ERROR_VERIFICATION_FAILED_SHORT, ERROR_DOUBLE_CHECK_CONNECTION, ); return { name: 'Verification error', description: error, }; } } else { Alert.alert(ERROR_INVLAID_CODE); } }; const navigateToAddWaitList = () => { navigation.navigate('AddWaitlistUser'); }; const Footer = () => ( navigation.navigate('Login')} /> ); return ( Enter the code Please enter the invitation code provided to you by us / your friend. (Use all caps.) ( {symbol || (isFocused ? : null)} )} /> Don't have an invite? {' '} Join the Waitlist