feat: account restoration flow done

updated some testids and aria labels, consolidated continue buttons into one component
pull/3083/head
William Grant 11 months ago
parent 293a733806
commit d14024d718

@ -177,19 +177,21 @@ const ShowHideButton = (props: {
if (props.forceShow) { if (props.forceShow) {
return ( return (
<SessionIconButton <SessionIconButton
ariaLabel={'Hide recovery phrase toggle'}
iconType={'eyeDisabled'} iconType={'eyeDisabled'}
iconColor={props.error ? 'var(--danger-color)' : 'var(--text-primary-color)'} iconColor={props.error ? 'var(--danger-color)' : 'var(--text-primary-color)'}
iconSize="huge" iconSize="huge"
onClick={props.toggleForceShow} onClick={props.toggleForceShow}
style={style} style={style}
aria-label={'Show or hide input'} aria-label={'Show or hide input'}
dataTestId="reveal-recovery-phrase-toggle" dataTestId="hide-recovery-phrase-toggle"
/> />
); );
} }
return ( return (
<SessionIconButton <SessionIconButton
ariaLabel={'Reveal recovery phrase toggle'}
iconType={'eye'} iconType={'eye'}
iconColor={props.error ? 'var(--danger-color)' : 'var(--text-primary-color)'} iconColor={props.error ? 'var(--danger-color)' : 'var(--text-primary-color)'}
iconSize="huge" iconSize="huge"

@ -82,7 +82,7 @@ export const LeftPaneMessageSection = () => {
return <ConversationListItem key={key} style={style} conversationId={conversationId} />; return <ConversationListItem key={key} style={style} conversationId={conversationId} />;
}; };
const renderList = () => { const ConversationList = () => {
if (!isEmpty(searchTerm)) { if (!isEmpty(searchTerm)) {
return <SearchResults />; return <SearchResults />;
} }
@ -113,7 +113,7 @@ export const LeftPaneMessageSection = () => {
); );
}; };
const renderConversations = () => { const Conversations = () => {
return ( return (
<StyledConversationListContent> <StyledConversationListContent>
<SessionSearchInput /> <SessionSearchInput />
@ -122,7 +122,7 @@ export const LeftPaneMessageSection = () => {
window.inboxStore?.dispatch(setLeftOverlayMode('message-requests')); window.inboxStore?.dispatch(setLeftOverlayMode('message-requests'));
}} }}
/> />
{renderList()} <ConversationList />
</StyledConversationListContent> </StyledConversationListContent>
); );
}; };
@ -130,7 +130,7 @@ export const LeftPaneMessageSection = () => {
return ( return (
<StyledLeftPaneContent> <StyledLeftPaneContent>
<LeftPaneSectionHeader /> <LeftPaneSectionHeader />
{leftOverlayMode ? <ClosableOverlay /> : renderConversations()} {leftOverlayMode ? <ClosableOverlay /> : <Conversations />}
</StyledLeftPaneContent> </StyledLeftPaneContent>
); );
}; };

@ -72,7 +72,12 @@ export function SessionProgressBar(props: Props) {
{showPercentage ? <StyledText>{Math.floor(progress)}%</StyledText> : null} {showPercentage ? <StyledText>{Math.floor(progress)}%</StyledText> : null}
</Flex> </Flex>
{subtitle || showPercentage ? <SpacerXL /> : null} {subtitle || showPercentage ? <SpacerXL /> : null}
<ProgressContainer color={backgroundColor} style={{ width }} data-testid="loading-animation"> <ProgressContainer
aria-label="Loading animation"
color={backgroundColor}
style={{ width }}
data-testid="loading-animation"
>
<Progress <Progress
color={color} color={color}
initial={{ width: `${initialValue}%` }} initial={{ width: `${initialValue}%` }}

@ -0,0 +1,21 @@
import { SessionButton, SessionButtonColor } from '../../basic/SessionButton';
type Props = {
onClick: () => void | Promise<void>;
disabled: boolean;
};
export const ContinueButton = (props: Props) => {
const { onClick, disabled } = props;
return (
<SessionButton
ariaLabel="Continue"
buttonColor={SessionButtonColor.White}
onClick={onClick}
text={window.i18n('continue')}
disabled={disabled}
dataTestId="continue-button"
/>
);
};

@ -1,5 +1,6 @@
import styled from 'styled-components'; import styled from 'styled-components';
import { BackButton } from './BackButton'; import { BackButton } from './BackButton';
import { ContinueButton } from './ContinueButton';
import { Hero } from './Hero'; import { Hero } from './Hero';
import { OnboardContainer } from './OnboardingContainer'; import { OnboardContainer } from './OnboardingContainer';
@ -15,4 +16,4 @@ const OnboardDescription = styled.p`
letter-spacing: normal; letter-spacing: normal;
`; `;
export { BackButton, Hero, OnboardContainer, OnboardDescription, OnboardHeading }; export { BackButton, ContinueButton, Hero, OnboardContainer, OnboardDescription, OnboardHeading };

@ -26,11 +26,10 @@ import {
} from '../../../util/accountManager'; } from '../../../util/accountManager';
import { Storage, setSignWithRecoveryPhrase } from '../../../util/storage'; import { Storage, setSignWithRecoveryPhrase } from '../../../util/storage';
import { Flex } from '../../basic/Flex'; import { Flex } from '../../basic/Flex';
import { SessionButton, SessionButtonColor } from '../../basic/SessionButton';
import { SpacerLG, SpacerSM } from '../../basic/Text'; import { SpacerLG, SpacerSM } from '../../basic/Text';
import { SessionInput } from '../../inputs'; import { SessionInput } from '../../inputs';
import { resetRegistration } from '../RegistrationStages'; import { resetRegistration } from '../RegistrationStages';
import { OnboardDescription, OnboardHeading } from '../components'; import { ContinueButton, OnboardDescription, OnboardHeading } from '../components';
import { BackButtonWithinContainer } from '../components/BackButton'; import { BackButtonWithinContainer } from '../components/BackButton';
import { displayNameIsValid, sanitizeDisplayNameOrToast } from '../utils'; import { displayNameIsValid, sanitizeDisplayNameOrToast } from '../utils';
@ -143,13 +142,9 @@ export const CreateAccount = () => {
inputDataTestId="display-name-input" inputDataTestId="display-name-input"
/> />
<SpacerLG /> <SpacerLG />
<SessionButton <ContinueButton
ariaLabel="Continue"
buttonColor={SessionButtonColor.White}
onClick={signUpWithDetails} onClick={signUpWithDetails}
text={window.i18n('continue')}
disabled={isEmpty(displayName) || !isEmpty(displayNameError)} disabled={isEmpty(displayName) || !isEmpty(displayNameError)}
dataTestId="continue-button"
/> />
</Flex> </Flex>
</BackButtonWithinContainer> </BackButtonWithinContainer>

@ -32,13 +32,12 @@ import {
} from '../../../util/accountManager'; } from '../../../util/accountManager';
import { setSignInByLinking, setSignWithRecoveryPhrase } from '../../../util/storage'; import { setSignInByLinking, setSignWithRecoveryPhrase } from '../../../util/storage';
import { Flex } from '../../basic/Flex'; import { Flex } from '../../basic/Flex';
import { SessionButton, SessionButtonColor } from '../../basic/SessionButton';
import { SpacerLG, SpacerSM } from '../../basic/Text'; import { SpacerLG, SpacerSM } from '../../basic/Text';
import { SessionIcon } from '../../icon'; import { SessionIcon } from '../../icon';
import { SessionInput } from '../../inputs'; import { SessionInput } from '../../inputs';
import { SessionProgressBar } from '../../loading'; import { SessionProgressBar } from '../../loading';
import { resetRegistration } from '../RegistrationStages'; import { resetRegistration } from '../RegistrationStages';
import { OnboardDescription, OnboardHeading } from '../components'; import { ContinueButton, OnboardDescription, OnboardHeading } from '../components';
import { BackButtonWithinContainer } from '../components/BackButton'; import { BackButtonWithinContainer } from '../components/BackButton';
import { useRecoveryProgressEffect } from '../hooks'; import { useRecoveryProgressEffect } from '../hooks';
import { displayNameIsValid, sanitizeDisplayNameOrToast } from '../utils'; import { displayNameIsValid, sanitizeDisplayNameOrToast } from '../utils';
@ -226,6 +225,7 @@ export const RestoreAccount = () => {
<OnboardDescription>{window.i18n('onboardingRecoveryPassword')}</OnboardDescription> <OnboardDescription>{window.i18n('onboardingRecoveryPassword')}</OnboardDescription>
<SpacerLG /> <SpacerLG />
<SessionInput <SessionInput
ariaLabel="Recovery phrase input"
autoFocus={true} autoFocus={true}
disableOnBlurEvent={true} disableOnBlurEvent={true}
type="password" type="password"
@ -245,12 +245,9 @@ export const RestoreAccount = () => {
inputDataTestId="recovery-phrase-input" inputDataTestId="recovery-phrase-input"
/> />
<SpacerLG /> <SpacerLG />
<SessionButton <ContinueButton
buttonColor={SessionButtonColor.White}
onClick={recoverAndFetchDisplayName} onClick={recoverAndFetchDisplayName}
text={window.i18n('continue')}
disabled={!(!!recoveryPassword && !recoveryPasswordError)} disabled={!(!!recoveryPassword && !recoveryPasswordError)}
dataTestId="continue-button"
/> />
</> </>
) : ( ) : (
@ -260,6 +257,7 @@ export const RestoreAccount = () => {
<OnboardDescription>{window.i18n('displayNameErrorNew')}</OnboardDescription> <OnboardDescription>{window.i18n('displayNameErrorNew')}</OnboardDescription>
<SpacerLG /> <SpacerLG />
<SessionInput <SessionInput
ariaLabel="Enter display name"
autoFocus={true} autoFocus={true}
disableOnBlurEvent={true} disableOnBlurEvent={true}
type="text" type="text"
@ -278,17 +276,14 @@ export const RestoreAccount = () => {
inputDataTestId="display-name-input" inputDataTestId="display-name-input"
/> />
<SpacerLG /> <SpacerLG />
<SessionButton <ContinueButton
buttonColor={SessionButtonColor.White}
onClick={recoverAndEnterDisplayName} onClick={recoverAndEnterDisplayName}
text={window.i18n('continue')}
disabled={ disabled={
isEmpty(recoveryPassword) || isEmpty(recoveryPassword) ||
!isEmpty(recoveryPasswordError) || !isEmpty(recoveryPasswordError) ||
isEmpty(displayName) || isEmpty(displayName) ||
!isEmpty(displayNameError) !isEmpty(displayNameError)
} }
dataTestId="continue-button"
/> />
</Flex> </Flex>
)} )}
@ -304,7 +299,9 @@ export const RestoreAccount = () => {
> >
<SessionProgressBar <SessionProgressBar
initialValue={ initialValue={
step !== AccountRestoration.Finished && step !== AccountRestoration.Complete ? 0 : 100 step !== AccountRestoration.Finished && step !== AccountRestoration.Complete
? progress
: 100
} }
progress={progress} progress={progress}
margin={'0'} margin={'0'}

Loading…
Cancel
Save