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}
/>
);
};