'use client'; import axios from 'axios'; import clsx from 'clsx'; import { useEffect, useState } from 'react'; import { toast } from 'react-toastify'; import { useConceptNavigation } from '@/app/Navigation/NavigationContext'; import { urls } from '@/app/urls'; import { useSignup } from '@/backend/users/useSignup'; import { IconHelp } from '@/components/Icons'; import InfoError, { ErrorData } from '@/components/info/InfoError'; import Button from '@/components/ui/Button'; import Checkbox from '@/components/ui/Checkbox'; import FlexColumn from '@/components/ui/FlexColumn'; import Overlay from '@/components/ui/Overlay'; import PrettyJson from '@/components/ui/PrettyJSON'; import SubmitButton from '@/components/ui/SubmitButton'; import TextInput from '@/components/ui/TextInput'; import TextURL from '@/components/ui/TextURL'; import Tooltip from '@/components/ui/Tooltip'; import { HelpTopic } from '@/models/miscellaneous'; import { IUserSignupData } from '@/models/user'; import { globals, patterns } from '@/utils/constants'; import { information } from '@/utils/labels'; function FormSignup() { const router = useConceptNavigation(); const { signup, isPending, error, reset } = useSignup(); const [username, setUsername] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [password2, setPassword2] = useState(''); const [firstName, setFirstName] = useState(''); const [lastName, setLastName] = useState(''); const [acceptPrivacy, setAcceptPrivacy] = useState(false); const [acceptRules, setAcceptRules] = useState(false); const isValid = acceptPrivacy && acceptRules && !!email && !!username; useEffect(() => { reset(); }, [username, email, password, password2, reset]); function handleCancel() { if (router.canBack()) { router.back(); } else { router.push(urls.library); } } function handleSubmit(event: React.FormEvent) { event.preventDefault(); if (!isPending) { const data: IUserSignupData = { username, email, password, password2, first_name: firstName, last_name: lastName }; signup(data, createdUser => { router.push(urls.login_hint(createdUser.username)); toast.success(information.newUser(createdUser.username)); }); } } return (

Новый пользователь используйте уникальный пароль для каждого сайта электронная почта используется для восстановления пароля

setUsername(event.target.value)} /> setPassword(event.target.value)} /> setPassword2(event.target.value)} /> setEmail(event.target.value)} /> setFirstName(event.target.value)} /> setLastName(event.target.value)} />
{error ? : null} ); } export default FormSignup; // ====== Internals ========= function ProcessError({ error }: { error: ErrorData }): React.ReactElement { if (axios.isAxiosError(error) && error.response && error.response.status === 400) { if ('email' in error.response.data) { return ( // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
{error.response.data.email}.
); } else if ('username' in error.response.data) { return ( // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
{error.response.data.username}.
); } else { return (
); } } return ; }