import { useSearchParams, Link } from 'react-router' import { useForm } from 'react-hook-form' import { ErrorMessage } from '@hookform/error-message' import { isValidCPF } from '@brazilian-utils/brazilian-utils' import { yupResolver } from '@hookform/resolvers/yup' import { Card } from '~/layouts/auth/layout' import { Control, Label, Input, Button, Error } from '~/components/form' import { Heading } from '~/components/heading' import { useMutation } from '@tanstack/react-query' import * as yup from 'yup' import { encode, parse } from '../_base64state' import axios from '~/axios' import Password from './_password' yup.addMethod(yup.string, 'username', function (message) { return this.test( 'username', message, (x) => isValidCPF(x) || yup.string().email().isValid(x), ) }) export const schema = yup.object({ username: yup .string() .trim() .lowercase() .username('Deve ser um Email ou CPF válido') .transform((x) => (isValidCPF(x) ? x.replace(/\D/g, '') : x)) .required('Digite um Email ou CPF'), }) export default function Component() { const [searchParams] = useSearchParams() const state = parse(searchParams.get('state')) if (state?.['cognito:sub']) { return } return } function SignIn() { const [searchParams, setSearchParams] = useSearchParams() const { handleSubmit, formState, setError, register } = useForm({ resolver: yupResolver(schema), }) const { mutateAsync } = useMutation({ mutationFn: async ({ username }) => { const { data } = await axios.get(`/search/lookup/${username}`) return data }, }) const onSubmit = async ({ username }) => { const data = await mutateAsync({ username }) setSearchParams((searchParams) => { searchParams.set('state', encode(data)) return searchParams }) } return ( Digite o seu email ou cpf para continuar {/* Sign in */}
{message}} />
ou
) }