I have a simple Login form with Remix + Conform v1 -> https://github.com/deadcoder0904/conform-remix-login
It works but for 1st failure attempt, it gives error.
export async function action({ request }: ActionFunctionArgs) {
const formData = await request.formData()
const submission = await parseWithZod(formData, {
schema: LoginFormSchema.transform(async (data, ctx) => {
const session = await login(data)
console.log({ session })
if (!session) {
ctx.addIssue({
path: ['email'],
code: z.ZodIssueCode.custom,
message: 'Invalid email or password',
})
return z.NEVER
}
return { ...data, session }
}),
async: true,
})
console.log({ submission })
console.log(submission.status !== 'success')
if (submission.status !== 'success' || !submission.value?.session) {
console.log('inside')
return json(
{ result: submission.reply({ hideFields: ['password'] }) },
{ status: submission.status === 'error' ? 400 : 200 }
)
}
console.log('hi')
const { session } = submission.value
if (!session) {
return json(
{ status: 'error', result: submission.reply() },
{ status: 400 }
)
}
return redirect('/dashboard', {
headers: {
'Set-Cookie': 'LoggedIn',
},
})
}
It used to work before v1 upgrade but somehow fails now. Idk if the issue is my code or Conform v1 itself isnt working well with Remix.
I followed kent's epic-stack code -> https://github.com/epicweb-dev/epic-stack/blob/main/app/routes/_auth%2B/login.tsx
Full issue which has the above code expanded as Discord has limits -> https://github.com/edmundhung/conform/discussions/527