diff --git a/stylesheets/_session_signin.scss b/stylesheets/_session_signin.scss index 5633a09cd..11e698cf2 100644 --- a/stylesheets/_session_signin.scss +++ b/stylesheets/_session_signin.scss @@ -154,7 +154,6 @@ &__unique-session-id { @include registration-label-mixin; - padding-top: 1em; text-align: center; } diff --git a/ts/components/session/SessionButton.tsx b/ts/components/session/SessionButton.tsx index e22bebeb5..313aaa5f0 100644 --- a/ts/components/session/SessionButton.tsx +++ b/ts/components/session/SessionButton.tsx @@ -15,10 +15,8 @@ export enum SessionButtonColor { Green = 'green', White = 'white', Primary = 'primary', - Secondary = 'secondary', Success = 'success', Danger = 'danger', - DangerAlt = 'danger-alt', Warning = 'warning', None = '', } diff --git a/ts/components/session/conversation/SessionMessagesListContainer.tsx b/ts/components/session/conversation/SessionMessagesListContainer.tsx index 6647b65aa..505cb4c32 100644 --- a/ts/components/session/conversation/SessionMessagesListContainer.tsx +++ b/ts/components/session/conversation/SessionMessagesListContainer.tsx @@ -84,7 +84,12 @@ class SessionMessagesListContainerInner extends React.Component { if (isSameConvo && snapShot?.realScrollTop && prevMsgLength !== newMsgLength) { if (messageAddedWasMoreRecentOne) { - currentRef.scrollTop = -(currentRef.scrollHeight - snapShot.realScrollTop); + if (snapShot.scrollHeight - snapShot.realScrollTop < 50) { + // consider that we were scrolled to bottom + currentRef.scrollTop = 0; + } else { + currentRef.scrollTop = -(currentRef.scrollHeight - snapShot.realScrollTop); + } } else { currentRef.scrollTop = snapShot.fakeScrollTop; } diff --git a/ts/components/session/registration/RegistrationStages.tsx b/ts/components/session/registration/RegistrationStages.tsx index 4e6152fe0..92fe085e8 100644 --- a/ts/components/session/registration/RegistrationStages.tsx +++ b/ts/components/session/registration/RegistrationStages.tsx @@ -2,8 +2,8 @@ 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'; -import { SignUpTab } from './SignUpTab'; -import { SignInTab } from './SignInTab'; +import { SignUpMode, SignUpTab } from './SignUpTab'; +import { SignInMode, SignInTab } from './SignInTab'; import { trigger } from '../../../shims/events'; import { generateMnemonic, @@ -159,14 +159,22 @@ export enum RegistrationPhase { interface RegistrationPhaseContext { registrationPhase: RegistrationPhase; + signUpMode: SignUpMode; + signInMode: SignInMode; setRegistrationPhase: (phase: RegistrationPhase) => void; + setSignInMode: (phase: SignInMode) => void; + setSignUpMode: (phase: SignUpMode) => void; generatedRecoveryPhrase: string; hexGeneratedPubKey: string; } export const RegistrationContext = createContext({ registrationPhase: RegistrationPhase.Start, + signInMode: SignInMode.Default, + signUpMode: SignUpMode.Default, setRegistrationPhase: () => undefined, + setSignUpMode: () => undefined, + setSignInMode: () => undefined, generatedRecoveryPhrase: '', hexGeneratedPubKey: '', }); @@ -175,6 +183,8 @@ export const RegistrationStages = () => { const [generatedRecoveryPhrase, setGeneratedRecoveryPhrase] = useState(''); const [hexGeneratedPubKey, setHexGeneratedPubKey] = useState(''); const [registrationPhase, setRegistrationPhase] = useState(RegistrationPhase.Start); + const [signInMode, setSignInMode] = useState(SignInMode.Default); + const [signUpMode, setSignUpMode] = useState(SignUpMode.Default); useEffect(() => { void generateMnemonicAndKeyPair(); @@ -206,6 +216,10 @@ export const RegistrationStages = () => { { - const { setRegistrationPhase } = useContext(RegistrationContext); + const { setRegistrationPhase, signInMode, setSignInMode } = useContext(RegistrationContext); - const [signInMode, setSignInMode] = useState(SignInMode.Default); const [recoveryPhrase, setRecoveryPhrase] = useState(''); const [recoveryPhraseError, setRecoveryPhraseError] = useState(undefined as string | undefined); const [displayName, setDisplayName] = useState(''); @@ -135,24 +135,28 @@ export const SignInTab = () => { return (
{signInMode !== SignInMode.Default && ( - { - const sanitizedName = name.replace(window.displayNameRegex, ''); - const trimName = sanitizedName.trim(); - setDisplayName(sanitizedName); - setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined); - }} - onSeedChanged={(seed: string) => { - setRecoveryPhrase(seed); - setRecoveryPhraseError(!seed ? window.i18n('recoveryPhraseEmpty') : undefined); - }} - recoveryPhrase={recoveryPhrase} - stealAutoFocus={true} - /> + <> + + + { + const sanitizedName = name.replace(window.displayNameRegex, ''); + const trimName = sanitizedName.trim(); + setDisplayName(sanitizedName); + setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined); + }} + onSeedChanged={(seed: string) => { + setRecoveryPhrase(seed); + setRecoveryPhraseError(!seed ? window.i18n('recoveryPhraseEmpty') : undefined); + }} + recoveryPhrase={recoveryPhrase} + stealAutoFocus={true} + /> + )} void }) => { ); }; +export const GoBackMainMenuButton = () => { + const { setRegistrationPhase, setSignInMode, setSignUpMode } = useContext(RegistrationContext); + return ( + { + setRegistrationPhase(RegistrationPhase.Start); + setSignInMode(SignInMode.Default); + setSignUpMode(SignUpMode.Default); + }} + /> + ); +}; + const SignUpSessionIDShown = (props: { continueSignUp: () => void }) => { return (
-
- {window.i18n('yourUniqueSessionID')} -
+ + + +
+ {window.i18n('yourUniqueSessionID')} +
+
{window.i18n('signupSessionIDBlurb')}
@@ -56,11 +79,13 @@ const SignUpSessionIDShown = (props: { continueSignUp: () => void }) => { }; export const SignUpTab = () => { - const { setRegistrationPhase, generatedRecoveryPhrase, hexGeneratedPubKey } = useContext( - RegistrationContext - ); - - const [signUpMode, setSignUpMode] = useState(SignUpMode.Default); + const { + signUpMode, + setRegistrationPhase, + generatedRecoveryPhrase, + hexGeneratedPubKey, + setSignUpMode, + } = useContext(RegistrationContext); const [displayName, setDisplayName] = useState(''); const [displayNameError, setDisplayNameError] = useState(''); @@ -106,10 +131,12 @@ export const SignUpTab = () => { return (
-
- {window.i18n('welcomeToYourSession')} -
- + + + + {window.i18n('welcomeToYourSession')} + +