import React, { useEffect, useRef, useState, ChangeEvent } from "react"; import { createUser } from "api/npm"; import { Alert, Button } from "components"; import { LocalePicker } from "components"; import { useAuthState, useHealthState } from "context"; import { intl } from "locale"; import logo from "../../img/logo-text-vertical-grey.png"; function Setup() { const nameRef = useRef(null); const { refreshHealth } = useHealthState(); const { login } = useAuthState(); const [loading, setLoading] = useState(false); const [renderCount, setRenderCount] = useState(0); const [errorMessage, setErrorMessage] = useState(""); const [formData, setFormData] = useState({ name: "", nickname: "", email: "", password: "", }); const onSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setErrorMessage(""); const { password, ...payload } = { ...formData, ...{ isDisabled: false, roles: ["admin"], auth: { type: "password", secret: formData.password, }, }, }; try { const response = await createUser({ payload }); if (response && typeof response.id !== "undefined" && response.id) { // Success, Login using creds try { await login(response.email, password); // Trigger a Health change refreshHealth(); // window.location.reload(); } catch (err: any) { setErrorMessage(err.message); setLoading(false); } } else { setErrorMessage("Unable to create user!"); } } catch (err: any) { setErrorMessage(err.message); } setLoading(false); }; const onChange = ({ target }: ChangeEvent) => { setFormData({ ...formData, [target.name]: target.value }); }; useEffect(() => { // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'. nameRef.current.focus(); }, []); return (
Logo

{intl.formatMessage({ id: "setup.title", defaultMessage: "Create your first Account", })}

{ setRenderCount(renderCount + 1); }} />
{errorMessage ? ( {errorMessage} ) : null}
); } export default Setup;