Created the RegisterTab.jsx
This commit is contained in:
parent
2dc95ec82c
commit
c1d6f8b56a
70
src/states/Login/tabs/RegisterTab/RegisterTab.jsx
Normal file
70
src/states/Login/tabs/RegisterTab/RegisterTab.jsx
Normal file
@ -0,0 +1,70 @@
|
||||
import {Alert, Button, CircularProgress, Stack, Typography} from "@mui/material";
|
||||
import {useState} from "react";
|
||||
import RegisterFields from "@/states/Login/tabs/RegisterTab/components/RegisterFields";
|
||||
import {postRequest} from "@/common/utils/RequestUtil.js";
|
||||
import Email from "@/common/assets/images/mail.svg";
|
||||
|
||||
export const RegisterTab = ({setShowTabs}) => {
|
||||
const [username, setUsername] = useState("");
|
||||
const [email, setEmail] = useState("");
|
||||
const [password, setPassword] = useState("");
|
||||
|
||||
const [fieldError, setFieldError] = useState("");
|
||||
|
||||
const [alreadyRegistered, setAlreadyRegistered] = useState(false);
|
||||
|
||||
const [accountCreated, setAccountCreated] = useState(false);
|
||||
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const register = (event) => {
|
||||
event.preventDefault();
|
||||
|
||||
if (username.length < 3) return setFieldError("username");
|
||||
if (email.length < 3) return setFieldError("email");
|
||||
if (password.length < 3) return setFieldError("password");
|
||||
|
||||
setLoading(true);
|
||||
|
||||
setTimeout(async () => {
|
||||
try {
|
||||
await postRequest("/user/register", {username, email, password});
|
||||
setFieldError("");
|
||||
setLoading(false);
|
||||
setShowTabs(false);
|
||||
setAccountCreated(true);
|
||||
} catch (e) {
|
||||
if (e.code === 1001) setAlreadyRegistered(true);
|
||||
|
||||
setLoading(false);
|
||||
setFieldError(e.fieldName);
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{!accountCreated && <Stack gap={1.5} component="form" onSubmit={register}>
|
||||
{fieldError && <Alert severity="error">Bitte korrigiere deine Eingaben.</Alert>}
|
||||
{alreadyRegistered && <Alert severity="error">Diesen Account gibt es bereits.</Alert>}
|
||||
|
||||
<RegisterFields username={username} setUsername={setUsername} email={email} setEmail={setEmail}
|
||||
password={password} setPassword={setPassword} fieldError={fieldError} />
|
||||
|
||||
<Button variant="contained" type="submit" disabled={loading}>
|
||||
{loading ? <CircularProgress size={24} color="inherit"/> : "Registrieren"}
|
||||
</Button>
|
||||
|
||||
</Stack>}
|
||||
{accountCreated && <Stack gap={1.5} alignItems="center" maxWidth="20rem" mt={3}>
|
||||
<img src={Email} alt="E-Mail" width="60%" />
|
||||
<Typography variant="h5" textAlign="center">
|
||||
Überprüfe deine E-Mails!
|
||||
</Typography>
|
||||
<Typography variant="body1" textAlign="center">
|
||||
Wir haben dir eine E-Mail mit einem Bestätigungslink geschickt.
|
||||
</Typography>
|
||||
</Stack>}
|
||||
</>
|
||||
)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user