import type { Metadata } from 'next'

import { notFound } from 'next/navigation'

import {
  generateArtikelCategoryParams,
  generateArtikelHubMetadata,
  renderArtikelHubPage,
} from '../../shared'

type Args = {
  params: Promise<{
    slug?: string
  }>
}

const parseCategorySlug = (value: string | undefined) => {
  if (!value) {
    return null
  }

  return value
}

export async function generateStaticParams() {
  return generateArtikelCategoryParams()
}

export default async function ArtikelCategoryPage({ params }: Args) {
  const categorySlug = parseCategorySlug((await params).slug)

  if (!categorySlug) {
    notFound()
  }

  return renderArtikelHubPage(1, categorySlug)
}

export async function generateMetadata({ params }: Args): Promise<Metadata> {
  const categorySlug = parseCategorySlug((await params).slug)

  if (!categorySlug) {
    notFound()
  }

  return generateArtikelHubMetadata(1, categorySlug)
}
