import { draftMode } from 'next/headers'
import { sanityClient, sanityClientWithToken } from '@/sanity/client'
import { qNewsBySlug } from '@/sanity/queries'
import { organizationService } from '@/services/organization/organizationService'
import { getServerOrgCode } from '@/lib/org'
import { NewsDetailModule } from '@/modules/newsModule/'

export const dynamic = 'force-dynamic'

export default async function ArticlePage({ params }: { params: Promise<{ slug: string }> }) {
  const { organization, notFound } = await resolveOrganization()
  if (notFound) {
    return notFound
  }
  const orgCode = organization?.code ?? ""
  const isDraft = (await draftMode()).isEnabled

  const { slug } = await params
  const client = isDraft ? sanityClientWithToken : sanityClient
  const data = await client.fetch(qNewsBySlug, { orgCode, slug })

  if (!data) return <div className="mx-auto max-w-4xl px-4 py-16 text-center text-slate-600 dark:text-slate-300">Artikel tidak ditemukan</div>

  return (
    <NewsDetailModule title={data.title} heroImage={data.heroImage} publishedAt={data.publishedAt} body={data.body} />
  )
}

async function resolveOrganization() {
  let sub = await getServerOrgCode();
  if (sub?.includes('-')) {
    sub = sub.replace(/-/g, '_');
  }
  const org = await organizationService.fetchByCode(sub || "");

  if (!org) {
    return { organization: null, notFound: true };
  }
  return { organization: org, notFound: false };
}