File

libs/impl/src/hooks/auth/useSignInForm.hook.ts

Index

Properties

Properties

onError
onError: function
Type : function
Optional
onSuccess
onSuccess: function
Type : function
Optional
import { useFormik } from 'formik'
import { useSignInHook } from './useSignIn.hook'
import { formikValidate, SignInWithEmailCredentialsDto } from '@isomera/dtos'
import { LoginResponseInterface, Pure } from '@isomera/interfaces'

const initialValues: Pure<SignInWithEmailCredentialsDto> = {
  email: '',
  password: ''
}

interface Options {
  onSuccess?: (arg0: LoginResponseInterface) => void
  onError?: (error?: unknown) => void
}

export const useSignInFormHook = (options: Options) => {
  const { login } = useSignInHook()

  const onSubmit = async (values: typeof initialValues) => {
    try {
      const data = await login(values)
      options.onSuccess && options.onSuccess(data)
    } catch (error) {
      options.onError && options.onError(error)
    }
  }

  const {
    values,
    handleChange,
    handleBlur,
    errors,
    touched,
    handleSubmit,
    isSubmitting
  } = useFormik({
    initialValues,
    validate: values => formikValidate(SignInWithEmailCredentialsDto, values),
    onSubmit
  })

  return {
    values,
    handleChange,
    handleBlur,
    errors,
    touched,
    handleSubmit,
    isSubmitting
  }
}

results matching ""

    No results matching ""