import { useRef } from 'react'; import { Auth } from '@aws-amplify/auth'; import { Authenticator, RadioGroupField, Radio } from '@aws-amplify/ui-react'; // import '@aws-amplify/ui-react/styles.css'; import './SignInSignUp.css'; import { AccountType } from '../constants'; export default function SignInSignUp(): JSX.Element { // Why not use a controlled component? When choosing a radio button for the custom attribute // "custom:accountType" in the Cognito UserPool, the provider resets all other default inputs // for standard attributes. We can revisit AWS Amplify UI later. const accountTypeRef = useRef({ accountType: undefined }); const components = { SignUp: { FormFields() { return ( <> Doctor Patient ); }, }, }; const services = { async handleSignUp(formData: any) { const { username, password, attributes } = formData; if (!accountTypeRef.current.accountType) { throw new Error('"Account type" is a required field.'); } return Auth.signUp({ username, password, attributes: { ...attributes, 'custom:accountType': accountTypeRef.current.accountType, }, }); }, async validateCustomSignUp(formData: any) { accountTypeRef.current.accountType = formData.accountType; }, }; return ( ); };