Auth: Screen transitions

This commit is contained in:
Alexander Zinchuk 2022-09-15 10:17:54 +02:00
parent d0ba24a328
commit 86e4bd1f3c
2 changed files with 44 additions and 14 deletions

View File

@ -1,3 +1,7 @@
.Auth {
height: 100%;
}
.auth-form {
width: 100%;
max-width: 25.5rem;

View File

@ -11,6 +11,7 @@ import windowSize from '../../util/windowSize';
import useHistoryBack from '../../hooks/useHistoryBack';
import useCurrentOrPrev from '../../hooks/useCurrentOrPrev';
import Transition from '../ui/Transition';
import AuthPhoneNumber from './AuthPhoneNumber';
import AuthCode from './AuthCode.async';
import AuthPassword from './AuthPassword.async';
@ -51,7 +52,7 @@ const Auth: FC<OwnProps & StateProps> = ({
useHistoryBack({
isActive: (!isMobile && authState === 'authorizationStateWaitPhoneNumber')
|| (isMobile && authState === 'authorizationStateWaitQrCode'),
|| (isMobile && authState === 'authorizationStateWaitQrCode'),
onBack: handleChangeAuthorizationMethod,
});
@ -70,20 +71,45 @@ const Auth: FC<OwnProps & StateProps> = ({
true,
);
switch (renderingAuthState) {
case 'authorizationStateWaitCode':
return <AuthCode />;
case 'authorizationStateWaitPassword':
return <AuthPassword />;
case 'authorizationStateWaitRegistration':
return <AuthRegister />;
case 'authorizationStateWaitPhoneNumber':
return <AuthPhoneNumber />;
case 'authorizationStateWaitQrCode':
return <AuthQrCode />;
default:
return isMobile ? <AuthPhoneNumber /> : <AuthQrCode />;
function getScreen() {
switch (renderingAuthState) {
case 'authorizationStateWaitCode':
return <AuthCode />;
case 'authorizationStateWaitPassword':
return <AuthPassword />;
case 'authorizationStateWaitRegistration':
return <AuthRegister />;
case 'authorizationStateWaitPhoneNumber':
return <AuthPhoneNumber />;
case 'authorizationStateWaitQrCode':
return <AuthQrCode />;
default:
return isMobile ? <AuthPhoneNumber /> : <AuthQrCode />;
}
}
function getActiveKey() {
switch (renderingAuthState) {
case 'authorizationStateWaitCode':
return 0;
case 'authorizationStateWaitPassword':
return 1;
case 'authorizationStateWaitRegistration':
return 2;
case 'authorizationStateWaitPhoneNumber':
return 3;
case 'authorizationStateWaitQrCode':
return 4;
default:
return isMobile ? 3 : 4;
}
}
return (
<Transition activeKey={getActiveKey()} name="fade" className="Auth">
{getScreen()}
</Transition>
);
};
export default memo(withGlobal<OwnProps>(