import { useImmer } from "use-immer"; // import { showLogin } from "../../navigation"; import { AuthContainer, AuthHeader } from "../components/Auth"; import { AlertsContainer, type Alert, type AlertType } from "../components/Alerts"; import { useRef } from "react"; import { TextField } from "mdui/components/text-field"; import type { ErrorResponse, RegisterRequest } from "../../core/types"; import { API_BASE_URL } from "../../core/config"; import { delay } from "../../utils/utils"; import { useAppState } from "../state"; import { MaterialTextField } from "../components/core/TextField"; export default function RegisterScreen() { const [alerts, updateAlerts] = useImmer([]); const setCurrentPage = useAppState(state => state.setCurrentPage); function showAlert(type: AlertType, message: string) { updateAlerts((alerts) => { alerts.push({type: type, message: message}) }); } const usernameElement = useRef(null); const passwordElement = useRef(null); const confirmPasswordElement = useRef(null); return (
{ e.preventDefault(); const username = usernameElement.current!.value.trim(); const password = passwordElement.current!.value.trim(); const confirmPassword = confirmPasswordElement.current!.value.trim(); if (!username || !password || !confirmPassword) { showAlert("danger", "Пожалуйста, заполните все поля"); return; } if (password !== confirmPassword) { showAlert("danger", "Пароли не совпадают"); return; } if (username.length < 3 || username.length > 20) { showAlert("danger", "Имя пользователя должно быть от 3 до 20 символов"); return; } if (password.length < 5 || password.length > 50) { showAlert("danger", "Пароль должен быть от 5 до 50 символов"); return; } try { const request: RegisterRequest = { username: username, password: password, confirm_password: confirmPassword } const response = await fetch(`${API_BASE_URL}/register`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(request) }); if (response.ok) { // Registration successful showAlert("success", "Регистрация прошла успешно! Теперь вы можете войти."); await delay(2000); setCurrentPage("login"); } else { const data: ErrorResponse = await response.json(); showAlert("danger", data.message || "Ошибка при регистрации"); } } catch (error) { showAlert("danger", "Ошибка соединения с сервером"); } }}> Зарегистрироваться

Уже есть аккаунт? setCurrentPage("login")}> Войдите

) }