import { msg } from "@lingui/core/macro" import { useLingui } from "@lingui/react" import { Trans } from "@lingui/react/macro" import { Box, Button, Container, Paper, PasswordInput, Stack, TextInput, Title } from "@mantine/core" import { useForm } from "@mantine/form" import { useAsyncCallback } from "react-async-hook" import { client, errorToStrings } from "@/app/client" import { redirectToRootCategory } from "@/app/redirect/thunks" import { useAppDispatch } from "@/app/store" import type { InitialSetupRequest } from "@/app/types" import { Alert } from "@/components/Alert" import { PageTitle } from "@/pages/PageTitle" export function InitialSetupPage() { const dispatch = useAppDispatch() const { _ } = useLingui() const form = useForm({ initialValues: { name: "", password: "", email: "", }, }) const login = useAsyncCallback(client.user.login, { onSuccess: () => { dispatch(redirectToRootCategory()) }, }) const setup = useAsyncCallback(client.user.initialSetup, { onSuccess: () => { login.execute(form.values) }, }) return ( <Trans>Initial Setup</Trans> Welcome! This appears to be the first time you're running CommaFeed. Please create an administrator account to get started. {setup.error && ( )}
Admin user name} placeholder={_(msg`Admin user name`)} {...form.getInputProps("name")} size="md" required autoCapitalize="off" /> Password} placeholder={_(msg`Password`)} {...form.getInputProps("password")} size="md" required /> E-mail} placeholder={_(msg`E-mail`)} {...form.getInputProps("email")} size="md" />
) }