adding use context pr change.

This commit is contained in:
Warrick Corfe-Tan 2021-08-18 11:46:23 +10:00
parent e6733551bb
commit 85fca22c08
3 changed files with 34 additions and 23 deletions

View File

@ -16,6 +16,7 @@ import { fromHex } from '../../../session/utils/String';
import { TaskTimedOutError } from '../../../session/utils/Promise';
import { mn_decode } from '../../../session/crypto/mnemonic';
import { getSwarmPollingInstance } from '../../../session/snode_api/swarmPolling';
import { createContext } from 'react';
export const MAX_USERNAME_LENGTH = 20;
// tslint:disable: use-simple-attributes
@ -158,6 +159,16 @@ export enum RegistrationPhase {
SignUp,
}
interface RegistrationPhaseContext {
registrationPhase: RegistrationPhase;
setRegistrationPhase: (phase: RegistrationPhase) => void;
}
export const RegistrationContext = createContext<RegistrationPhaseContext>({
registrationPhase: RegistrationPhase.Start,
setRegistrationPhase: () => {}
});
export const RegistrationStages = () => {
const [generatedRecoveryPhrase, setGeneratedRecoveryPhrase] = useState('');
const [hexGeneratedPubKey, setHexGeneratedPubKey] = useState('');
@ -190,18 +201,21 @@ export const RegistrationStages = () => {
return (
<div className="session-registration-container">
{(registrationPhase === RegistrationPhase.Start ||
registrationPhase === RegistrationPhase.SignUp) && (
<SignUpTab
generatedRecoveryPhrase={generatedRecoveryPhrase}
hexGeneratedPubKey={hexGeneratedPubKey}
setRegistrationPhase={setRegistrationPhase}
/>
)}
{(registrationPhase === RegistrationPhase.Start ||
registrationPhase === RegistrationPhase.SignIn) && (
<SignInTab setRegistrationPhase={setRegistrationPhase} />
)}
<RegistrationContext.Provider value={{registrationPhase, setRegistrationPhase}}>
{(registrationPhase === RegistrationPhase.Start ||
registrationPhase === RegistrationPhase.SignUp) && (
<SignUpTab
generatedRecoveryPhrase={generatedRecoveryPhrase}
hexGeneratedPubKey={hexGeneratedPubKey}
// setRegistrationPhase={setRegistrationPhase}
/>
)}
{(registrationPhase === RegistrationPhase.Start ||
registrationPhase === RegistrationPhase.SignIn) && (
<SignInTab />
)}
</RegistrationContext.Provider>
</div>
);
};

View File

@ -1,9 +1,9 @@
import React, { createContext, useState } from 'react';
import React, { useContext, useState } from 'react';
import { Flex } from '../../basic/Flex';
import { SpacerLG } from '../../basic/Text';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton';
import { SessionSpinner } from '../SessionSpinner';
import { RegistrationPhase, signInWithLinking, signInWithRecovery } from './RegistrationStages';
import { RegistrationContext, RegistrationPhase, signInWithLinking, signInWithRecovery } from './RegistrationStages';
import { RegistrationUserDetails } from './RegistrationUserDetails';
import { TermsAndConditions } from './TermsAndConditions';
@ -85,12 +85,9 @@ const SignInButtons = (props: {
);
};
interface Props {
setRegistrationPhase: (phase: RegistrationPhase) => void;
}
export const SignInTab = () => {
const { setRegistrationPhase } = useContext(RegistrationContext);
export const SignInTab = (props: Props) => {
const { setRegistrationPhase } = props;
const [signInMode, setSignInMode] = useState(SignInMode.Default);
const [recoveryPhrase, setRecoveryPhrase] = useState('');
const [recoveryPhraseError, setRecoveryPhraseError] = useState(undefined as string | undefined);

View File

@ -1,7 +1,7 @@
import React, { useEffect, useState } from 'react';
import React, { useContext, useEffect, useState } from 'react';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton';
import { SessionIdEditable } from '../SessionIdEditable';
import { RegistrationPhase, signUp } from './RegistrationStages';
import { RegistrationContext, RegistrationPhase, signUp } from './RegistrationStages';
import { RegistrationUserDetails } from './RegistrationUserDetails';
import { TermsAndConditions } from './TermsAndConditions';
@ -15,7 +15,6 @@ export interface Props {
// tslint:disable: react-unused-props-and-state
generatedRecoveryPhrase: string;
hexGeneratedPubKey: string;
setRegistrationPhase: (phase: any) => any;
}
const CreateSessionIdButton = ({ createSessionID }: { createSessionID: any }) => {
@ -63,7 +62,8 @@ const SignUpSessionIDShown = (props: { continueSignUp: () => void }) => {
};
export const SignUpTab = (props: Props) => {
const { setRegistrationPhase } = props;
const { setRegistrationPhase } = useContext(RegistrationContext);
const [signUpMode, setSignUpMode] = useState(SignUpMode.Default);
const [displayName, setDisplayName] = useState('');
const [displayNameError, setDisplayNameError] = useState('');