import { notFound } from "next/navigation"

import { request } from "@/lib/request"
import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql"

import ContentPage from "@/components/Current/ContentPage"
import Header from "@/components/Current/Header"
import Tracking from "@/components/Current/Tracking"

import type { PageArgs, LangParams, UriParams } from "@/types/params"
import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage"

export default async function CurrentContentPage({
  params,
  searchParams,
}: PageArgs<LangParams, UriParams>) {
  try {
    if (!searchParams.uri) {
      throw new Error("Bad URI")
    }

    const response = await request<GetCurrentBlockPageData>(
      GetCurrentBlockPage,
      {
        locale: params.lang,
        url: searchParams.uri,
      }
    )

    if (!response.data?.all_current_blocks_page?.total) {
      console.log("#### DATA ####")
      console.log(response.data)
      console.log("SearchParams URI: ", searchParams.uri)
      throw new Error("Not found")
    }
    const pageData = response.data.all_current_blocks_page.items[0]
    const trackingData = {
      pageName: pageData.title,
      pageType: pageData.__typename,
      publishedDate: pageData.system.updated_at,
      createdDate: pageData.system.created_at,
      pageId: pageData.system.uid,
    }

    return (
      <>
        <Header lang={params.lang} uid={pageData.system.uid} />
        <ContentPage data={response.data} />
        <Tracking pageData={trackingData} />
      </>
    )
  } catch (err) {
    return notFound()
  }
}
