'use client'
import { InputField, Wrapper } from '@/components'
import { LoginDocument, MeDocument, PostsDocument } from '@/generated/graphql/graphql'
import { errorMapper } from '@/utils'
import { useMutation, useQuery } from '@apollo/client/react'
import { Link } from '@chakra-ui/next-js'
import { Box, Button } from '@chakra-ui/react'
import { Form, Formik } from 'formik'
import { useRouter, useSearchParams } from 'next/navigation'
import { Suspense } from 'react'
const Page: React.FC = () => {
const router = useRouter()
const searchParams = useSearchParams()
const { refetch } = useQuery(MeDocument)
const { refetch: refetchPosts } = useQuery(PostsDocument)
const [login] = useMutation(LoginDocument)
return (
{
const response = await login({ variables: { input: values } })
const errors = response.data?.login.errors
if (errors) {
setErrors(errorMapper(errors))
}
else if (response.data?.login.user) {
// Successful login
await refetch() // Refetch client-side
await refetchPosts()
const destination = searchParams.get('redirect')
if (destination) {
router.push(destination)
}
else {
router.push('/')
}
}
}}
>
{({ isSubmitting }) => (
)}
)
}
const LoginPage = () => {
return (
)
}
export default LoginPage