import { CustomerPageShell } from "@/app/customer/_components/customer-page-shell";
import { DiscussionThreadForm } from "@/app/customer/[tenant]/discussion-board/_components/discussion-thread-form";
import { DISCUSSION_BOARD_PERMISSION } from "@/app/customer/[tenant]/discussion-board/_lib/discussion-board-route";
import { fetchFormOptions } from "@/app/customer/[tenant]/discussion-board/_lib/discussion-board-server-api";
import { ErrorBanner } from "@/components/shared/error-banner";
import { getCustomerSessionContext } from "@/lib/frontend-auth/server";

type PageProps = {
  params: Promise<{ tenant: string }>;
};

export default async function CustomerDiscussionBoardCreatePage({ params }: PageProps) {
  const { tenant } = await params;
  const session = await getCustomerSessionContext(tenant);
  const hasPermission = session.permissions.routes.includes(DISCUSSION_BOARD_PERMISSION);

  if (!hasPermission) {
    return (
      <CustomerPageShell>
        <ErrorBanner message="You do not have permission to create discussion topics." />
      </CustomerPageShell>
    );
  }

  const formOptionsResult = await fetchFormOptions(tenant);

  return (
    <CustomerPageShell>
      {formOptionsResult.errorMessage ? (
        <ErrorBanner message={formOptionsResult.errorMessage} />
      ) : null}
      <DiscussionThreadForm
        tenant={tenant}
        mode="create"
        formOptions={formOptionsResult.data ?? { tags: [], visibilityChoices: [] }}
      />
    </CustomerPageShell>
  );
}
