import React, { useContext, useEffect, useState } from 'react'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton'; import { SessionIdEditable } from '../SessionIdEditable'; import { RegistrationContext, RegistrationPhase, signUp } from './RegistrationStages'; import { RegistrationUserDetails } from './RegistrationUserDetails'; import { TermsAndConditions } from './TermsAndConditions'; export enum SignUpMode { Default, SessionIDShown, EnterDetails, } const CreateSessionIdButton = ({ createSessionID }: { createSessionID: any }) => { return ( ); }; const ContinueSignUpButton = ({ continueSignUp }: { continueSignUp: any }) => { return ( ); }; const SignUpDefault = (props: { createSessionID: () => void }) => { return (
); }; const SignUpSessionIDShown = (props: { continueSignUp: () => void }) => { return (
{window.i18n('yourUniqueSessionID')}
{window.i18n('signupSessionIDBlurb')}
); }; export const SignUpTab = () => { const { setRegistrationPhase, generatedRecoveryPhrase, hexGeneratedPubKey } = useContext( RegistrationContext ); const [signUpMode, setSignUpMode] = useState(SignUpMode.Default); const [displayName, setDisplayName] = useState(''); const [displayNameError, setDisplayNameError] = useState(''); useEffect(() => { if (signUpMode === SignUpMode.SessionIDShown) { window.Session.setNewSessionID(hexGeneratedPubKey); } }, [signUpMode]); if (signUpMode === SignUpMode.Default) { return ( { setSignUpMode(SignUpMode.SessionIDShown); setRegistrationPhase(RegistrationPhase.SignUp); }} /> ); } if (signUpMode === SignUpMode.SessionIDShown) { return ( { setSignUpMode(SignUpMode.EnterDetails); }} /> ); } // can only be the EnterDetails step // Display name is required const displayNameOK = !displayNameError && !!displayName; const enableCompleteSignUp = displayNameOK; const signUpWithDetails = async () => { await signUp({ displayName, generatedRecoveryPhrase: generatedRecoveryPhrase, }); }; return (
{window.i18n('welcomeToYourSession')}
{ const sanitizedName = name.replace(window.displayNameRegex, ''); const trimName = sanitizedName.trim(); setDisplayName(sanitizedName); setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined); }} stealAutoFocus={true} />
); };