aboutsummaryrefslogtreecommitdiff
path: root/modern/src
diff options
context:
space:
mode:
Diffstat (limited to 'modern/src')
-rw-r--r--modern/src/App.js3
-rw-r--r--modern/src/login/RegisterPage.js20
2 files changed, 18 insertions, 5 deletions
diff --git a/modern/src/App.js b/modern/src/App.js
index e21cf1bf..62f0d749 100644
--- a/modern/src/App.js
+++ b/modern/src/App.js
@@ -27,6 +27,7 @@ const App = () => {
const desktop = useMediaQuery(theme.breakpoints.up('md'));
+ const newServer = useSelector((state) => state.session.server.newServer);
const initialized = useSelector((state) => !!state.session.user);
useEffectAsync(async () => {
@@ -34,6 +35,8 @@ const App = () => {
const response = await fetch('/api/session');
if (response.ok) {
dispatch(sessionActions.updateUser(await response.json()));
+ } else if (newServer) {
+ navigate('/register');
} else {
navigate('/login');
}
diff --git a/modern/src/login/RegisterPage.js b/modern/src/login/RegisterPage.js
index 08ff3e8f..6dfe40a4 100644
--- a/modern/src/login/RegisterPage.js
+++ b/modern/src/login/RegisterPage.js
@@ -1,4 +1,5 @@
import React, { useState } from 'react';
+import { useDispatch, useSelector } from 'react-redux';
import {
Button, TextField, Typography, Snackbar, IconButton,
} from '@mui/material';
@@ -9,6 +10,7 @@ import LoginLayout from './LoginLayout';
import { useTranslation } from '../common/components/LocalizationProvider';
import { snackBarDurationShortMs } from '../common/util/duration';
import { useCatch } from '../reactHelper';
+import { sessionActions } from '../store';
const useStyles = makeStyles((theme) => ({
container: {
@@ -30,9 +32,12 @@ const useStyles = makeStyles((theme) => ({
const RegisterPage = () => {
const classes = useStyles();
+ const dispatch = useDispatch();
const navigate = useNavigate();
const t = useTranslation();
+ const server = useSelector((state) => state.session.server);
+
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
@@ -55,9 +60,11 @@ const RegisterPage = () => {
<LoginLayout>
<div className={classes.container}>
<div className={classes.header}>
- <IconButton color="primary" onClick={() => navigate('/login')}>
- <ArrowBackIcon />
- </IconButton>
+ {!server.newServer && (
+ <IconButton color="primary" onClick={() => navigate('/login')}>
+ <ArrowBackIcon />
+ </IconButton>
+ )}
<Typography className={classes.title} color="primary">
{t('loginRegister')}
</Typography>
@@ -93,7 +100,7 @@ const RegisterPage = () => {
variant="contained"
color="secondary"
onClick={handleSubmit}
- disabled={!name || !/(.+)@(.+)\.(.{2,})/.test(email) || !password}
+ disabled={!name || !password || !(server.newServer || /(.+)@(.+)\.(.{2,})/.test(email))}
fullWidth
>
{t('loginRegister')}
@@ -101,7 +108,10 @@ const RegisterPage = () => {
</div>
<Snackbar
open={snackbarOpen}
- onClose={() => navigate('/login')}
+ onClose={() => {
+ dispatch(sessionActions.updateServer({ ...server, newServer: false }));
+ navigate('/login');
+ }}
autoHideDuration={snackBarDurationShortMs}
message={t('loginCreated')}
/>