fix: remove TermsOfServicePrivacyDialog from convo state
we are moving it to a separate onboarding storepull/3056/head
parent
b10873c64a
commit
a07fea677b
@ -0,0 +1,108 @@
|
|||||||
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
|
import { MAX_USERNAME_BYTES } from '../../../../session/constants';
|
||||||
|
import { ToastUtils } from '../../../../session/utils';
|
||||||
|
import { sanitizeSessionUsername } from '../../../../session/utils/String';
|
||||||
|
import { useSelectedConversationKey } from '../../../../state/selectors/selectedConversation';
|
||||||
|
import { Flex } from '../../../basic/Flex';
|
||||||
|
import { SessionButton } from '../../../basic/SessionButton';
|
||||||
|
import { SpacerLG, SpacerXL } from '../../../basic/Text';
|
||||||
|
import { SessionInput2 } from '../../../inputs';
|
||||||
|
import { SessionProgressBar } from '../../../loading';
|
||||||
|
import { StyledScrollContainer } from './components';
|
||||||
|
|
||||||
|
export const OverlayRightPanelSettings2 = () => {
|
||||||
|
const selectedConvoKey = useSelectedConversationKey();
|
||||||
|
|
||||||
|
// TODO[epic=ses-50] move this into already have an account screen
|
||||||
|
// #region for testing
|
||||||
|
const [progress, setProgress] = useState(0);
|
||||||
|
const [inputValue, setInputValue] = useState('');
|
||||||
|
const [inputError, setInputError] = useState<string | undefined>(undefined);
|
||||||
|
|
||||||
|
function sanitizeDisplayNameOrToast(
|
||||||
|
displayName: string,
|
||||||
|
setDisplayName: (sanitized: string) => void,
|
||||||
|
setDisplayNameError: (error: string | undefined) => void
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
const sanitizedName = sanitizeSessionUsername(displayName);
|
||||||
|
const trimName = sanitizedName.trim();
|
||||||
|
setDisplayName(sanitizedName);
|
||||||
|
setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined);
|
||||||
|
} catch (e) {
|
||||||
|
setDisplayName(displayName);
|
||||||
|
setDisplayNameError(window.i18n('displayNameTooLong'));
|
||||||
|
ToastUtils.pushToastError('toolong', window.i18n('displayNameTooLong'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleInputChanged = (name: string) => {
|
||||||
|
sanitizeDisplayNameOrToast(name, setInputValue, setInputError);
|
||||||
|
if (name.length > 8) {
|
||||||
|
setInputError(window.i18n('displayNameTooLong'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleEnterPressed = (name: string) => {
|
||||||
|
if (name) {
|
||||||
|
sanitizeDisplayNameOrToast(name, setInputValue, setInputError);
|
||||||
|
ToastUtils.pushToastSuccess('success', window.i18n('done'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const interval = setInterval(() => {
|
||||||
|
setProgress(oldProgress => {
|
||||||
|
if (oldProgress === 100) {
|
||||||
|
clearInterval(interval);
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
return Math.min(oldProgress + 10, 100);
|
||||||
|
});
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
return () => clearInterval(interval);
|
||||||
|
}, []);
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
if (!selectedConvoKey) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<StyledScrollContainer>
|
||||||
|
<Flex container={true} flexDirection={'column'} alignItems={'center'}>
|
||||||
|
<SessionProgressBar
|
||||||
|
progress={progress}
|
||||||
|
width={'320px'}
|
||||||
|
margin={'var(--margins-lg) auto'}
|
||||||
|
title={window.i18n('waitOneMoment')}
|
||||||
|
subtitle={window.i18n('loadAccountProgressMessage')}
|
||||||
|
showPercentage={true}
|
||||||
|
/>
|
||||||
|
<SpacerLG />
|
||||||
|
<SessionInput2
|
||||||
|
placeholder={window.i18n('enterDisplayName')}
|
||||||
|
value={inputValue}
|
||||||
|
error={inputError}
|
||||||
|
maxLength={MAX_USERNAME_BYTES}
|
||||||
|
onValueChanged={handleInputChanged}
|
||||||
|
onEnterPressed={handleEnterPressed}
|
||||||
|
ctaButton={
|
||||||
|
<SessionButton
|
||||||
|
onClick={() => {
|
||||||
|
window.log.debug(
|
||||||
|
`WIP: [OverlayRightPanelSettings] clicked continuing your session! `
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
text={window.i18n('continueYourSession')}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<SpacerLG />
|
||||||
|
<SpacerXL />
|
||||||
|
</Flex>
|
||||||
|
</StyledScrollContainer>
|
||||||
|
);
|
||||||
|
};
|
Loading…
Reference in New Issue