import { createContext, useState, ReactNode } from 'react'

const noop = () => undefined

interface TwoFactorContextType {
  open: boolean
  setOpen: (value: boolean) => void
  targetRoute: string
  setTargetRoute: (value: string) => void
}

export const TwoFactorContext =
  createContext<TwoFactorContextType>({
    open: false,
    setOpen: noop,
    targetRoute: '',
    setTargetRoute: noop
  })

export const TwoFactorProvider = ({
  children
}: {
  children: ReactNode
}) => {
  const [open, setOpen] = useState(false)
  const [targetRoute, setTargetRoute] = useState('')

  return (
    <TwoFactorContext.Provider
      value={{
        open,
        setOpen,
        targetRoute,
        setTargetRoute
      }}
    >
      {children}
    </TwoFactorContext.Provider>
  )
}