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

import type { PageArgs, LangParams, UriParams } from "@/types/params"
import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage"
import ContentstackLivePreview from "@contentstack/live-preview-utils"
import LoadingPreview from "@/components/Current/LoadingPreview"
import ContentPage from "@/components/Current/ContentPage"

export default async function CurrentContentPage({
  params,
  searchParams,
}: PageArgs<LangParams, UriParams>) {
  try {
    ContentstackLivePreview.setConfigFromParams(searchParams)

    if (!searchParams.uri) {
      return <LoadingPreview />
    }

    const response = await previewRequest<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")
    }

    return (
      <ContentPage
        data={response.data}
        uri={searchParams.uri}
        lang={params.lang}
      />
    )
  } catch (error) {
    // TODO: throw 500
    console.error(error)
    throw new Error("Something went wrong")
  }
}
