"use client"

import { redirect } from "next/navigation"
import { useSession } from "next-auth/react"

import { logoutSafely } from "@scandic-hotels/common/constants/routes/handleAuth"
import { trpc } from "@scandic-hotels/trpc/client"

import { userNotFound } from "@/constants/routes/errorPages"

import useLang from "@/hooks/useLang"
import { isValidClientSession } from "@/utils/clientSession"

export function UserExists() {
  const { data: session } = useSession()
  const isUserLoggedIn = isValidClientSession(session)
  const lang = useLang()

  const { data, isLoading: isLoadingUser } = trpc.user.get.useQuery(undefined, {
    enabled: isUserLoggedIn,
  })

  if (!isUserLoggedIn) {
    return null
  }

  if (isLoadingUser) {
    return null
  }

  if (data && "error" in data && data.error) {
    switch (data.cause) {
      case "notfound":
        redirect(
          `${logoutSafely[lang]}?redirectTo=${encodeURIComponent(userNotFound[lang])}`
        )
      default:
        break
    }
  }

  return null
}
