import { createServerComponentClient } from "@supabase/auth-helpers-nextjs"; import { Database } from "@/types/supabase"; import { cookies } from "next/headers"; import { redirect } from "next/navigation"; import Link from "next/link"; import prisma from "@/lib/prisma"; import { CreateProject } from "@/components/create-project"; import { Button } from "@/components/ui/button"; import { ChevronDownIcon } from "@radix-ui/react-icons"; import { cn } from "@/lib/utils"; import { Settings } from "lucide-react"; import { WorkspaceSettings } from "./workspace-settings"; async function getSession(supabase: any) { const { data: { session }, } = await supabase.auth.getSession(); return session; } async function fetchProjects(workspaceID: string) { const supabase = createServerComponentClient({ cookies }); const session = await getSession(supabase); if (!session) redirect("/auth"); try { // TODO: fetch all projects that are part of this workspace, and that the user is a part of. const projects = await prisma.project.findMany({ where: { workspace_id: BigInt(workspaceID), profile_project: { some: { profile_id: session.user.id, }, }, }, }); const res = projects.map((project) => ({ ...project, id: String(project.id), })); console.log(res); return res; } catch (err) { console.error(err); } } async function getWorkspace(workspaceID: string) { const supabase = createServerComponentClient({ cookies }); const session = await getSession(supabase); if (!session) redirect("/auth"); try { const workspace = await prisma.workspace.findUnique({ where: { id: BigInt(workspaceID), }, }); if (!workspace) throw new Error("Workspace not found."); const res = { ...workspace, id: String(workspace.id), }; console.log(res); return res; } catch (err) { console.error(err); } } export async function WorkspaceSidebar({ workspaceID, projectID, }: { workspaceID: string; projectID?: string; }) { const workspace = await getWorkspace(workspaceID); const projects = await fetchProjects(workspaceID); console.log("PROJECTS", projects); console.log("WORKSPACE", workspace); if (!workspace) { return (

Workspace not found.

); } if (projects?.length == 0 || !projects) { return (

{workspace.name}

Projects

); } return (

{workspace.name}

Projects

{projects.map((project) => (
))}
); }