'use client';
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import clsx from 'clsx';
import { urls, useConceptNavigation } from '@/app';
import { isAxiosError } from '@/backend/apiTransport';
import { SubmitButton, TextURL } from '@/components/Control';
import { ErrorData } from '@/components/InfoError';
import { TextInput } from '@/components/Input';
import { useQueryStrings } from '@/hooks/useQueryStrings';
import { resources } from '@/utils/constants';
import { IUserLoginDTO, schemaUserLogin } from '../backend/types';
import { useAuthSuspense } from '../backend/useAuth';
import { useLogin } from '../backend/useLogin';
import { ExpectedAnonymous } from '../components/ExpectedAnonymous';
export function LoginPage() {
const router = useConceptNavigation();
const query = useQueryStrings();
const initialName = query.get('username') ?? '';
const {
register,
handleSubmit,
clearErrors,
formState: { errors }
} = useForm({
resolver: zodResolver(schemaUserLogin),
defaultValues: { username: initialName, password: '' }
});
const { isAnonymous } = useAuthSuspense();
const { login, isPending, error: serverError, reset: clearServerError } = useLogin();
function onSubmit(data: IUserLoginDTO) {
return login(data).then(() => {
if (router.canBack()) {
router.back();
} else {
router.push(urls.library);
}
});
}
function resetErrors() {
clearServerError();
clearErrors();
}
if (!isAnonymous) {
return