/* * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0/ * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ import React from 'react'; import { View } from 'react-native'; import { Auth, I18n, Logger } from 'aws-amplify'; import { FormField, LinkCell, Header, ErrorRow, AmplifyButton, SignedOutMessage, Wrapper, } from '../AmplifyUI'; import AuthPiece, { IAuthPieceProps, IAuthPieceState } from './AuthPiece'; import TEST_ID from '../AmplifyTestIDs'; const logger = new Logger('ConfirmSignUp'); interface IConfirmSignUpProps extends IAuthPieceProps {} interface IConfirmSignUpState extends IAuthPieceState { code: string | null; } export default class ConfirmSignUp extends AuthPiece< IConfirmSignUpProps, IConfirmSignUpState > { constructor(props: IConfirmSignUpProps) { super(props); this._validAuthStates = ['confirmSignUp']; this.state = { username: null, code: null, error: null, }; this.confirm = this.confirm.bind(this); this.resend = this.resend.bind(this); } confirm() { const { code } = this.state; const username = this.getUsernameFromInput(); logger.debug('Confirm Sign Up for ' + username); Auth.confirmSignUp(username, code) .then(data => this.changeState('signedUp')) .catch(err => this.error(err)); } resend() { const username = this.getUsernameFromInput(); logger.debug('Resend Sign Up for ' + username); Auth.resendSignUp(username) .then(() => logger.debug('code sent')) .catch(err => this.error(err)); } static getDerivedStateFromProps(props, state) { const username = props.authData; if (username && !state.username) { return { username }; } return null; } showComponent(theme) { const username = this.getUsernameFromInput(); return (
{I18n.get('Confirm Sign Up')}
{this.renderUsernameField(theme)} this.setState({ code: text })} label={I18n.get('Confirmation Code')} placeholder={I18n.get('Enter your confirmation code')} required={true} testID={TEST_ID.AUTH.CONFIRMATION_CODE_INPUT} /> {I18n.get('Resend code')} this.changeState('signIn')} testID={TEST_ID.AUTH.BACK_TO_SIGN_IN_BUTTON} > {I18n.get('Back to Sign In')} {this.state.error}
); } }