From bf645f36b72e8d4b5b65c4cb98e28757bbf4038f Mon Sep 17 00:00:00 2001 From: Warrick Corfe-Tan Date: Mon, 16 Aug 2021 09:27:29 +1000 Subject: [PATCH 1/8] Combining registration steps. --- _locales/en/messages.json | 2 +- stylesheets/_session_signin.scss | 4 +- .../session/SessionRegistrationView.tsx | 4 +- .../session/registration/RegistrationTabs.tsx | 101 +++++++----------- .../session/registration/SignInTab.tsx | 13 ++- .../session/registration/SignUpTab.tsx | 10 +- 6 files changed, 57 insertions(+), 77 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 442a633ef..274f6d015 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -338,7 +338,7 @@ "createAccount": "Create account", "signIn": "Sign In", "yourUniqueSessionID": "Say hello to your Session ID", - "allUsersAreRandomly...": "Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design.", + "signupSessionIDBlurb": "Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design.", "getStarted": "Get started", "createSessionID": "Create Session ID", "recoveryPhrase": "Recovery Phrase", diff --git a/stylesheets/_session_signin.scss b/stylesheets/_session_signin.scss index 58d734d59..12fe807b1 100644 --- a/stylesheets/_session_signin.scss +++ b/stylesheets/_session_signin.scss @@ -149,7 +149,7 @@ color: themed('textColor'); } font-weight: bold; - padding: 12px; + padding: 20px; } &__welcome-session { @@ -278,7 +278,7 @@ &-description-long, &-signin-device-pairing-header { - padding-top: 10px; + padding-top: 0; padding-bottom: 20px; @include themify($themes) { @include session-color-subtle(themed('textColor')); diff --git a/ts/components/session/SessionRegistrationView.tsx b/ts/components/session/SessionRegistrationView.tsx index 8602df016..8e61a7733 100644 --- a/ts/components/session/SessionRegistrationView.tsx +++ b/ts/components/session/SessionRegistrationView.tsx @@ -1,7 +1,7 @@ import React, { useEffect } from 'react'; import { AccentText } from './AccentText'; -import { RegistrationTabs } from './registration/RegistrationTabs'; +import { RegistrationOptions } from './registration/RegistrationTabs'; import { SessionIconButton, SessionIconSize, SessionIconType } from './icon'; import { SessionToastContainer } from './SessionToastContainer'; import { lightTheme, SessionTheme } from '../../state/ducks/SessionTheme'; @@ -36,7 +36,7 @@ export const SessionRegistrationView = () => {
- +
diff --git a/ts/components/session/registration/RegistrationTabs.tsx b/ts/components/session/registration/RegistrationTabs.tsx index d32934055..4b807f335 100644 --- a/ts/components/session/registration/RegistrationTabs.tsx +++ b/ts/components/session/registration/RegistrationTabs.tsx @@ -1,11 +1,11 @@ -import React from 'react'; +import React, { useState } from 'react'; import { PromiseUtils, StringUtils, ToastUtils, UserUtils } from '../../../session/utils'; import { getConversationController } from '../../../session/conversations'; import { createOrUpdateItem, removeAll } from '../../../data/data'; import { SignUpTab } from './SignUpTab'; import { SignInTab } from './SignInTab'; -import { TabLabel, TabType } from './TabLabel'; +import { TabLabel, TabType } from './TabLabel'; // TODO: remove unused tabs import { trigger } from '../../../shims/events'; import { generateMnemonic, @@ -17,16 +17,11 @@ 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 { useEffect } from 'react'; export const MAX_USERNAME_LENGTH = 20; // tslint:disable: use-simple-attributes -interface State { - selectedTab: TabType; - generatedRecoveryPhrase: string; - hexGeneratedPubKey: string; -} - export async function resetRegistration() { await removeAll(); await window.storage.reset(); @@ -158,45 +153,27 @@ export async function signInWithLinking(signInDetails: { userRecoveryPhrase: str window?.log?.warn('exception during registration:', e); } } -export class RegistrationTabs extends React.Component { - constructor(props: any) { - super(props); - this.state = { - selectedTab: TabType.SignUp, - generatedRecoveryPhrase: '', - hexGeneratedPubKey: '', - }; - } - public componentDidMount() { - void this.generateMnemonicAndKeyPair(); - void resetRegistration(); - } +export enum RegistrationPhase { + Start, + SignIn, + CreateSessionID, + RestoreYourAccount, + LinkDevice +} - public render() { - const { selectedTab } = this.state; - - return ( -
-
- - -
- {this.renderSections()} -
- ); - } +export const RegistrationOptions = (props: any) => { + const [generatedRecoveryPhrase, setGeneratedRecoveryPhrase] = useState(''); + const [hexGeneratedPubKey, setHexGeneratedPubKey] = useState(''); + const [registrationPhase, setRegistrationPhase] = useState(RegistrationPhase.Start); + + useEffect(() => { + void generateMnemonicAndKeyPair(); + void resetRegistration(); + }, []) - private async generateMnemonicAndKeyPair() { - if (this.state.generatedRecoveryPhrase === '') { + const generateMnemonicAndKeyPair = async () => { + if (generatedRecoveryPhrase === '') { const mnemonic = await generateMnemonic(); let seedHex = mn_decode(mnemonic); @@ -210,30 +187,28 @@ export class RegistrationTabs extends React.Component { const keyPair = await sessionGenerateKeyPair(seed); const hexGeneratedPubKey = StringUtils.decode(keyPair.pubKey, 'hex'); - this.setState({ - generatedRecoveryPhrase: mnemonic, - hexGeneratedPubKey, // our 'frontend' sessionID - }); + setGeneratedRecoveryPhrase(mnemonic); + setHexGeneratedPubKey(hexGeneratedPubKey); // our 'frontend' sessionID } } - private readonly handleTabSelect = (tabType: TabType): void => { - this.setState({ - selectedTab: tabType, - }); - }; - - private renderSections() { - const { selectedTab, generatedRecoveryPhrase, hexGeneratedPubKey } = this.state; - if (selectedTab === TabType.SignUp) { - return ( + return ( +
+ {(registrationPhase === RegistrationPhase.Start || + registrationPhase === RegistrationPhase.CreateSessionID) && - ); - } - - return ; - } + } + { + (registrationPhase === RegistrationPhase.Start || + registrationPhase === RegistrationPhase.SignIn) && + + } +
+ ) } diff --git a/ts/components/session/registration/SignInTab.tsx b/ts/components/session/registration/SignInTab.tsx index 40f05251d..6578b31f3 100644 --- a/ts/components/session/registration/SignInTab.tsx +++ b/ts/components/session/registration/SignInTab.tsx @@ -3,7 +3,7 @@ import { Flex } from '../../basic/Flex'; import { SpacerLG } from '../../basic/Text'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton'; import { SessionSpinner } from '../SessionSpinner'; -import { signInWithLinking, signInWithRecovery } from './RegistrationTabs'; +import { RegistrationPhase, signInWithLinking, signInWithRecovery } from './RegistrationTabs'; import { RegistrationUserDetails } from './RegistrationUserDetails'; import { TermsAndConditions } from './TermsAndConditions'; @@ -80,14 +80,17 @@ const SignInButtons = (props: {
-
{window.i18n('or')}
-
); }; -export const SignInTab = () => { +interface Props { + setRegistrationPhase: (phase: any) => any; +} + +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); @@ -153,12 +156,14 @@ export const SignInTab = () => { { + setRegistrationPhase(RegistrationPhase.SignIn); setSignInMode(SignInMode.UsingRecoveryPhrase); setRecoveryPhrase(''); setDisplayName(''); setIsLoading(false); }} onLinkDeviceButtonClicked={() => { + setRegistrationPhase(RegistrationPhase.SignIn); setSignInMode(SignInMode.LinkDevice); setRecoveryPhrase(''); setDisplayName(''); diff --git a/ts/components/session/registration/SignUpTab.tsx b/ts/components/session/registration/SignUpTab.tsx index df4d1d0a0..530ab53cc 100644 --- a/ts/components/session/registration/SignUpTab.tsx +++ b/ts/components/session/registration/SignUpTab.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton'; import { SessionIdEditable } from '../SessionIdEditable'; -import { signUp } from './RegistrationTabs'; +import { RegistrationPhase, signUp } from './RegistrationTabs'; import { RegistrationUserDetails } from './RegistrationUserDetails'; import { TermsAndConditions } from './TermsAndConditions'; @@ -15,6 +15,7 @@ export interface Props { // tslint:disable: react-unused-props-and-state generatedRecoveryPhrase: string; hexGeneratedPubKey: string; + setRegistrationPhase: (phase: any) => any; } const CreateSessionIdButton = ({ createSessionID }: { createSessionID: any }) => { @@ -40,10 +41,8 @@ const ContinueSignUpButton = ({ continueSignUp }: { continueSignUp: any }) => { }; const SignUpDefault = (props: { createSessionID: () => void }) => { - const allUsersAreRandomly = window.i18n('allUsersAreRandomly...'); return (
-
{allUsersAreRandomly}
); @@ -55,8 +54,8 @@ const SignUpSessionIDShown = (props: { continueSignUp: () => void }) => {
{window.i18n('yourUniqueSessionID')}
- +
{window.i18n('signupSessionIDBlurb')}
@@ -64,8 +63,8 @@ const SignUpSessionIDShown = (props: { continueSignUp: () => void }) => { }; export const SignUpTab = (props: Props) => { + const { setRegistrationPhase } = props; const [signUpMode, setSignUpMode] = useState(SignUpMode.Default); - const [displayName, setDisplayName] = useState(''); const [displayNameError, setDisplayNameError] = useState(''); @@ -80,6 +79,7 @@ export const SignUpTab = (props: Props) => { { setSignUpMode(SignUpMode.SessionIDShown); + setRegistrationPhase(RegistrationPhase.CreateSessionID) }} /> ); From 0c5f2f823233d53b37591722e7403f39502e0d23 Mon Sep 17 00:00:00 2001 From: Warrick Corfe-Tan Date: Mon, 16 Aug 2021 09:42:05 +1000 Subject: [PATCH 2/8] changing registration component and filename. --- ts/components/dialog/EditProfileDialog.tsx | 2 +- ts/components/session/SessionRegistrationView.tsx | 4 ++-- .../{RegistrationTabs.tsx => RegistrationStages.tsx} | 9 +++------ .../session/registration/RegistrationUserDetails.tsx | 2 +- ts/components/session/registration/SignInTab.tsx | 2 +- ts/components/session/registration/SignUpTab.tsx | 4 ++-- 6 files changed, 10 insertions(+), 13 deletions(-) rename ts/components/session/registration/{RegistrationTabs.tsx => RegistrationStages.tsx} (96%) diff --git a/ts/components/dialog/EditProfileDialog.tsx b/ts/components/dialog/EditProfileDialog.tsx index fc8249335..6be11f1be 100644 --- a/ts/components/dialog/EditProfileDialog.tsx +++ b/ts/components/dialog/EditProfileDialog.tsx @@ -9,7 +9,7 @@ import { SessionButton, SessionButtonColor, SessionButtonType } from '../session import { SessionIconButton, SessionIconSize, SessionIconType } from '../session/icon'; import { PillDivider } from '../session/PillDivider'; import { SyncUtils, ToastUtils, UserUtils } from '../../session/utils'; -import { MAX_USERNAME_LENGTH } from '../session/registration/RegistrationTabs'; +import { MAX_USERNAME_LENGTH } from '../session/registration/RegistrationStages'; import { SessionSpinner } from '../session/SessionSpinner'; import { ConversationModel, ConversationTypeEnum } from '../../models/conversation'; diff --git a/ts/components/session/SessionRegistrationView.tsx b/ts/components/session/SessionRegistrationView.tsx index 8e61a7733..e19f94f6a 100644 --- a/ts/components/session/SessionRegistrationView.tsx +++ b/ts/components/session/SessionRegistrationView.tsx @@ -1,7 +1,7 @@ import React, { useEffect } from 'react'; import { AccentText } from './AccentText'; -import { RegistrationOptions } from './registration/RegistrationTabs'; +import { RegistrationStages } from './registration/RegistrationStages'; import { SessionIconButton, SessionIconSize, SessionIconType } from './icon'; import { SessionToastContainer } from './SessionToastContainer'; import { lightTheme, SessionTheme } from '../../state/ducks/SessionTheme'; @@ -36,7 +36,7 @@ export const SessionRegistrationView = () => {
- +
diff --git a/ts/components/session/registration/RegistrationTabs.tsx b/ts/components/session/registration/RegistrationStages.tsx similarity index 96% rename from ts/components/session/registration/RegistrationTabs.tsx rename to ts/components/session/registration/RegistrationStages.tsx index 4b807f335..aabc15f15 100644 --- a/ts/components/session/registration/RegistrationTabs.tsx +++ b/ts/components/session/registration/RegistrationStages.tsx @@ -5,7 +5,6 @@ import { getConversationController } from '../../../session/conversations'; import { createOrUpdateItem, removeAll } from '../../../data/data'; import { SignUpTab } from './SignUpTab'; import { SignInTab } from './SignInTab'; -import { TabLabel, TabType } from './TabLabel'; // TODO: remove unused tabs import { trigger } from '../../../shims/events'; import { generateMnemonic, @@ -157,12 +156,10 @@ export async function signInWithLinking(signInDetails: { userRecoveryPhrase: str export enum RegistrationPhase { Start, SignIn, - CreateSessionID, - RestoreYourAccount, - LinkDevice + SignUp } -export const RegistrationOptions = (props: any) => { +export const RegistrationStages = (props: any) => { const [generatedRecoveryPhrase, setGeneratedRecoveryPhrase] = useState(''); const [hexGeneratedPubKey, setHexGeneratedPubKey] = useState(''); const [registrationPhase, setRegistrationPhase] = useState(RegistrationPhase.Start); @@ -195,7 +192,7 @@ export const RegistrationOptions = (props: any) => { return (
{(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.CreateSessionID) && + registrationPhase === RegistrationPhase.SignUp) && { { setSignUpMode(SignUpMode.SessionIDShown); - setRegistrationPhase(RegistrationPhase.CreateSessionID) + setRegistrationPhase(RegistrationPhase.SignUp) }} /> ); From 59d52d6e66f44a422e3c1ffc2d8be03a3d2f4a4f Mon Sep 17 00:00:00 2001 From: Warrick Corfe-Tan Date: Mon, 16 Aug 2021 09:57:38 +1000 Subject: [PATCH 3/8] running yarn ready --- .../session/SessionRegistrationView.tsx | 2 +- .../registration/RegistrationStages.tsx | 34 ++++++++----------- .../session/registration/SignUpTab.tsx | 2 +- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/ts/components/session/SessionRegistrationView.tsx b/ts/components/session/SessionRegistrationView.tsx index e19f94f6a..e78e3bb54 100644 --- a/ts/components/session/SessionRegistrationView.tsx +++ b/ts/components/session/SessionRegistrationView.tsx @@ -36,7 +36,7 @@ export const SessionRegistrationView = () => {
- +
diff --git a/ts/components/session/registration/RegistrationStages.tsx b/ts/components/session/registration/RegistrationStages.tsx index aabc15f15..3f53380e5 100644 --- a/ts/components/session/registration/RegistrationStages.tsx +++ b/ts/components/session/registration/RegistrationStages.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { PromiseUtils, StringUtils, ToastUtils, UserUtils } from '../../../session/utils'; import { getConversationController } from '../../../session/conversations'; @@ -16,7 +16,6 @@ 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 { useEffect } from 'react'; export const MAX_USERNAME_LENGTH = 20; // tslint:disable: use-simple-attributes @@ -156,10 +155,10 @@ export async function signInWithLinking(signInDetails: { userRecoveryPhrase: str export enum RegistrationPhase { Start, SignIn, - SignUp + SignUp, } -export const RegistrationStages = (props: any) => { +export const RegistrationStages = () => { const [generatedRecoveryPhrase, setGeneratedRecoveryPhrase] = useState(''); const [hexGeneratedPubKey, setHexGeneratedPubKey] = useState(''); const [registrationPhase, setRegistrationPhase] = useState(RegistrationPhase.Start); @@ -167,7 +166,7 @@ export const RegistrationStages = (props: any) => { useEffect(() => { void generateMnemonicAndKeyPair(); void resetRegistration(); - }, []) + }, []); const generateMnemonicAndKeyPair = async () => { if (generatedRecoveryPhrase === '') { @@ -182,30 +181,27 @@ export const RegistrationStages = (props: any) => { } const seed = fromHex(seedHex); const keyPair = await sessionGenerateKeyPair(seed); - const hexGeneratedPubKey = StringUtils.decode(keyPair.pubKey, 'hex'); + const newHexPubKey = StringUtils.decode(keyPair.pubKey, 'hex'); setGeneratedRecoveryPhrase(mnemonic); - setHexGeneratedPubKey(hexGeneratedPubKey); // our 'frontend' sessionID + setHexGeneratedPubKey(newHexPubKey); // our 'frontend' sessionID } - } + }; return (
{(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignUp) && + registrationPhase === RegistrationPhase.SignUp) && ( - } - { - (registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignIn) && - - } + )} + {(registrationPhase === RegistrationPhase.Start || + registrationPhase === RegistrationPhase.SignIn) && ( + + )}
- ) -} + ); +}; diff --git a/ts/components/session/registration/SignUpTab.tsx b/ts/components/session/registration/SignUpTab.tsx index d9de4e1ca..769300485 100644 --- a/ts/components/session/registration/SignUpTab.tsx +++ b/ts/components/session/registration/SignUpTab.tsx @@ -79,7 +79,7 @@ export const SignUpTab = (props: Props) => { { setSignUpMode(SignUpMode.SessionIDShown); - setRegistrationPhase(RegistrationPhase.SignUp) + setRegistrationPhase(RegistrationPhase.SignUp); }} /> ); From e6733551bbf550bef568af89afc77e4e893c2fed Mon Sep 17 00:00:00 2001 From: Warrick Corfe-Tan Date: Wed, 18 Aug 2021 10:55:11 +1000 Subject: [PATCH 4/8] applying pr fix 1 --- ts/components/session/registration/SignInTab.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ts/components/session/registration/SignInTab.tsx b/ts/components/session/registration/SignInTab.tsx index 13205f815..8e32dc2e5 100644 --- a/ts/components/session/registration/SignInTab.tsx +++ b/ts/components/session/registration/SignInTab.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { createContext, useState } from 'react'; import { Flex } from '../../basic/Flex'; import { SpacerLG } from '../../basic/Text'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton'; @@ -86,7 +86,7 @@ const SignInButtons = (props: { }; interface Props { - setRegistrationPhase: (phase: any) => any; + setRegistrationPhase: (phase: RegistrationPhase) => void; } export const SignInTab = (props: Props) => { From 85fca22c0845880f2c42e49bd33d47713710de58 Mon Sep 17 00:00:00 2001 From: Warrick Corfe-Tan Date: Wed, 18 Aug 2021 11:46:23 +1000 Subject: [PATCH 5/8] adding use context pr change. --- .../registration/RegistrationStages.tsx | 38 +++++++++++++------ .../session/registration/SignInTab.tsx | 11 ++---- .../session/registration/SignUpTab.tsx | 8 ++-- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/ts/components/session/registration/RegistrationStages.tsx b/ts/components/session/registration/RegistrationStages.tsx index 3f53380e5..49d9fecc7 100644 --- a/ts/components/session/registration/RegistrationStages.tsx +++ b/ts/components/session/registration/RegistrationStages.tsx @@ -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({ + registrationPhase: RegistrationPhase.Start, + setRegistrationPhase: () => {} +}); + export const RegistrationStages = () => { const [generatedRecoveryPhrase, setGeneratedRecoveryPhrase] = useState(''); const [hexGeneratedPubKey, setHexGeneratedPubKey] = useState(''); @@ -190,18 +201,21 @@ export const RegistrationStages = () => { return (
- {(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignUp) && ( - - )} - {(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignIn) && ( - - )} + + {(registrationPhase === RegistrationPhase.Start || + registrationPhase === RegistrationPhase.SignUp) && ( + + )} + {(registrationPhase === RegistrationPhase.Start || + registrationPhase === RegistrationPhase.SignIn) && ( + + )} + +
); }; diff --git a/ts/components/session/registration/SignInTab.tsx b/ts/components/session/registration/SignInTab.tsx index 8e32dc2e5..05af89b15 100644 --- a/ts/components/session/registration/SignInTab.tsx +++ b/ts/components/session/registration/SignInTab.tsx @@ -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); diff --git a/ts/components/session/registration/SignUpTab.tsx b/ts/components/session/registration/SignUpTab.tsx index 769300485..171ebb6ea 100644 --- a/ts/components/session/registration/SignUpTab.tsx +++ b/ts/components/session/registration/SignUpTab.tsx @@ -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(''); From 4564863dd5529007348c497f89e95413fee9648d Mon Sep 17 00:00:00 2001 From: Warrick Corfe-Tan Date: Wed, 18 Aug 2021 11:54:53 +1000 Subject: [PATCH 6/8] yarn ready --- .../registration/RegistrationStages.tsx | 25 ++++++++----------- .../session/registration/SignInTab.tsx | 7 +++++- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/ts/components/session/registration/RegistrationStages.tsx b/ts/components/session/registration/RegistrationStages.tsx index 49d9fecc7..537aa1ac5 100644 --- a/ts/components/session/registration/RegistrationStages.tsx +++ b/ts/components/session/registration/RegistrationStages.tsx @@ -1,5 +1,4 @@ -import React, { useEffect, useState } from 'react'; - +import React, { createContext, useEffect, useState } from 'react'; import { PromiseUtils, StringUtils, ToastUtils, UserUtils } from '../../../session/utils'; import { getConversationController } from '../../../session/conversations'; import { createOrUpdateItem, removeAll } from '../../../data/data'; @@ -16,7 +15,6 @@ 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 @@ -166,7 +164,7 @@ interface RegistrationPhaseContext { export const RegistrationContext = createContext({ registrationPhase: RegistrationPhase.Start, - setRegistrationPhase: () => {} + setRegistrationPhase: () => undefined, }); export const RegistrationStages = () => { @@ -201,20 +199,17 @@ export const RegistrationStages = () => { return (
- + {(registrationPhase === RegistrationPhase.Start || registrationPhase === RegistrationPhase.SignUp) && ( - - )} + + )} {(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignIn) && ( - - )} - + registrationPhase === RegistrationPhase.SignIn) && }
); diff --git a/ts/components/session/registration/SignInTab.tsx b/ts/components/session/registration/SignInTab.tsx index 05af89b15..862e783d7 100644 --- a/ts/components/session/registration/SignInTab.tsx +++ b/ts/components/session/registration/SignInTab.tsx @@ -3,7 +3,12 @@ import { Flex } from '../../basic/Flex'; import { SpacerLG } from '../../basic/Text'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../SessionButton'; import { SessionSpinner } from '../SessionSpinner'; -import { RegistrationContext, RegistrationPhase, signInWithLinking, signInWithRecovery } from './RegistrationStages'; +import { + RegistrationContext, + RegistrationPhase, + signInWithLinking, + signInWithRecovery, +} from './RegistrationStages'; import { RegistrationUserDetails } from './RegistrationUserDetails'; import { TermsAndConditions } from './TermsAndConditions'; From 68330b42bfd4c5bb57b2b8c65f0273774e82e005 Mon Sep 17 00:00:00 2001 From: audric Date: Thu, 19 Aug 2021 09:01:22 +1000 Subject: [PATCH 7/8] Add logs of PN server notify fails --- ts/session/sending/MessageSentHandler.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ts/session/sending/MessageSentHandler.ts b/ts/session/sending/MessageSentHandler.ts index 330226efd..d2d851644 100644 --- a/ts/session/sending/MessageSentHandler.ts +++ b/ts/session/sending/MessageSentHandler.ts @@ -94,7 +94,10 @@ export class MessageSentHandler { window?.log?.warn('Should send PN notify but no wrapped envelope set.'); } else { // we do not really care about the retsult. - await PnServer.notifyPnServer(wrappedEnvelope, sentMessage.device); + const pnNotifyRet = await PnServer.notifyPnServer(wrappedEnvelope, sentMessage.device); + if (!pnNotifyRet) { + window?.log?.warn('Push notification server request returned false'); + } } } From 665c717271c58f23a317a2ddfa56e64f7d996547 Mon Sep 17 00:00:00 2001 From: Warrick Corfe-Tan Date: Thu, 19 Aug 2021 13:39:51 +1000 Subject: [PATCH 8/8] adding PR change. --- .../registration/RegistrationStages.tsx | 21 ++++++++++++------- .../session/registration/SignUpTab.tsx | 16 ++++++-------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/ts/components/session/registration/RegistrationStages.tsx b/ts/components/session/registration/RegistrationStages.tsx index 537aa1ac5..4e6152fe0 100644 --- a/ts/components/session/registration/RegistrationStages.tsx +++ b/ts/components/session/registration/RegistrationStages.tsx @@ -160,11 +160,15 @@ export enum RegistrationPhase { interface RegistrationPhaseContext { registrationPhase: RegistrationPhase; setRegistrationPhase: (phase: RegistrationPhase) => void; + generatedRecoveryPhrase: string; + hexGeneratedPubKey: string; } export const RegistrationContext = createContext({ registrationPhase: RegistrationPhase.Start, setRegistrationPhase: () => undefined, + generatedRecoveryPhrase: '', + hexGeneratedPubKey: '', }); export const RegistrationStages = () => { @@ -199,15 +203,16 @@ export const RegistrationStages = () => { return (
- + {(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignUp) && ( - - )} + registrationPhase === RegistrationPhase.SignUp) && } {(registrationPhase === RegistrationPhase.Start || registrationPhase === RegistrationPhase.SignIn) && } diff --git a/ts/components/session/registration/SignUpTab.tsx b/ts/components/session/registration/SignUpTab.tsx index 171ebb6ea..8dddb7e15 100644 --- a/ts/components/session/registration/SignUpTab.tsx +++ b/ts/components/session/registration/SignUpTab.tsx @@ -11,12 +11,6 @@ export enum SignUpMode { EnterDetails, } -export interface Props { - // tslint:disable: react-unused-props-and-state - generatedRecoveryPhrase: string; - hexGeneratedPubKey: string; -} - const CreateSessionIdButton = ({ createSessionID }: { createSessionID: any }) => { return ( void }) => { ); }; -export const SignUpTab = (props: Props) => { - const { setRegistrationPhase } = useContext(RegistrationContext); +export const SignUpTab = () => { + const { setRegistrationPhase, generatedRecoveryPhrase, hexGeneratedPubKey } = useContext( + RegistrationContext + ); const [signUpMode, setSignUpMode] = useState(SignUpMode.Default); const [displayName, setDisplayName] = useState(''); @@ -70,7 +66,7 @@ export const SignUpTab = (props: Props) => { useEffect(() => { if (signUpMode === SignUpMode.SessionIDShown) { - window.Session.setNewSessionID(props.hexGeneratedPubKey); + window.Session.setNewSessionID(hexGeneratedPubKey); } }, [signUpMode]); @@ -104,7 +100,7 @@ export const SignUpTab = (props: Props) => { const signUpWithDetails = async () => { await signUp({ displayName, - generatedRecoveryPhrase: props.generatedRecoveryPhrase, + generatedRecoveryPhrase: generatedRecoveryPhrase, }); };