diff --git a/src/states/Login/tabs/RegisterTab/RegisterTab.jsx b/src/states/Login/tabs/RegisterTab/RegisterTab.jsx new file mode 100644 index 0000000..281fe64 --- /dev/null +++ b/src/states/Login/tabs/RegisterTab/RegisterTab.jsx @@ -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 && + {fieldError && Bitte korrigiere deine Eingaben.} + {alreadyRegistered && Diesen Account gibt es bereits.} + + + + + + } + {accountCreated && + E-Mail + + Überprüfe deine E-Mails! + + + Wir haben dir eine E-Mail mit einem Bestätigungslink geschickt. + + } + + ) +} \ No newline at end of file