import { SessionProvider } from 'next-auth/react'
import Auth from '../components/auth'

// This is the HOC
function withAuth(WrappedComponent: React.FunctionComponent) {
  // Return a new component
  function withAuth({ session, ...pageProps }) {
    // Render the WrappedComponent with additional props
    return (
      <SessionProvider session={session}>
        <Auth>
          <WrappedComponent {...pageProps} />
        </Auth>
      </SessionProvider>
    )
  }

  withAuth.displayName = `withAuth(${WrappedComponent.displayName}`

  return withAuth
}

export default withAuth
