import { createServerComponentClient } from "@supabase/auth-helpers-nextjs";
import { Database } from "@/types/supabase";
import { cookies } from "next/headers";
import { redirect } from "next/navigation";
import { NextResponse, NextRequest } from "next/server";
import prisma from "@/lib/prisma";
import { WorkspaceSidebar } from "@/components/workspace-sidebar";
import { Button } from "@/components/ui/button";
import { CreateProject } from "@/components/create-project";

async function getSession(supabase: any) {
  const {
    data: { session },
  } = await supabase.auth.getSession();
  return session;
}

async function getWorkspace(workspaceID: string) {
  const supabase = createServerComponentClient<Database>({ cookies });
  const session = await getSession(supabase);

  if (!session) redirect("/auth");

  try {
    // TODO: get workspace by workspaceID if user is part of the workspace
    return NextResponse.json({}, { status: 200 });
  } catch (err: any) {
    console.error(err);
    return NextResponse.json(
      { error: "Something went wrong." },
      { status: 500 }
    );
  }
}

export default async function Workspace({
  params: { workspaceID },
}: {
  params: { workspaceID: string };
}) {
  const raw_workspace = await getWorkspace(workspaceID);
  const workspace = await raw_workspace.json();

  if (workspace.error == "not_found") {
    return (
      <div>
        <h1>Workspace not found.</h1>
      </div>
    );
  } else if (workspace.error == "unauthorized") {
    return (
      <div>
        <h1>You are not a member of this workspace.</h1>
      </div>
    );
  } else if (workspace.error) {
    return (
      <div>
        <h1>Something went wrong.</h1>
      </div>
    );
  }

  return (
    <div className="flex flex-row w-full h-screen justify-center items-center">
      {/* <WorkspaceSidebar workspaceID={workspaceID} />
      <h1>Workspace Page</h1> */}
      <div className="border-2 border-dashed h-[400px] w-[600px] rounded-md flex flex-col justify-center items-center">
        <CreateProject />
      </div>
    </div>
  );
}