import { auth } from '@clerk/nextjs';
import { notFound, redirect } from 'next/navigation';

import { db } from '@/lib/db';
import { BoardNavbar } from './_components/board-navbar';

export async function generateMetadata({
  params,
}: {
  params: { boardId: string };
}) {
  const { orgId } = auth();

  if (!orgId) return { title: 'Board' };

  const board = await db.board.findUnique({
    where: {
      id: params.boardId,
      orgId,
    },
  });

  return {
    title: board?.title ?? 'Board',
  };
}

const BoardIdLayout = async ({
  children,
  params,
}: {
  children: React.ReactNode;
  params: { boardId: string };
}) => {
  const { orgId } = auth();

  if (!orgId) redirect('/select-org');

  const board = await db.board.findUnique({
    where: {
      id: params.boardId,
      orgId,
    },
    cacheStrategy: { ttl: 30, swr: 60 },
  });

  if (!board) notFound();

  return (
    <div
      className='relative h-full bg-cover bg-center bg-no-repeat'
      style={{ backgroundImage: `url(${board.imageFullUrl})` }}
    >
      <BoardNavbar data={board} />
      <div className='absolute inset-0 bg-black/10' />
      <main className='relative h-full pt-28'>{children}</main>
    </div>
  );
};

export default BoardIdLayout;