page.tsx (1883B)
1 import { listBots } from "@/lib/api"; 2 import { User } from "@/lib/auth"; 3 import { cookies } from "next/headers"; 4 import SettingsLayout from "../settingsLayout"; 5 import AddProtectedRoom from "@/components/modals/add-protected-room"; 6 import { ScrollArea } from "@/components/ui/scroll-area"; 7 import ProtectedRomsList from "@/components/dashboard/protected-rooms-list"; 8 9 export default async function ProtectedRoomsSettingsPage({ 10 searchParams, 11 }: { 12 searchParams: Promise<{ [key: string]: string | string[] | undefined }> 13 }) { 14 const teamIdParam = (await searchParams).team as string | undefined; 15 const cookieStore = await cookies() 16 const session: User = JSON.parse(cookieStore.get("d4all_session")?.value || "{}") 17 if (!session.token) { 18 return <div className="flex h-screen w-full items-center justify-center">Loading...</div> 19 } 20 const listData = await listBots(session.matrixId, session.token); 21 22 if (!listData) { 23 return <div className="flex h-screen w-full items-center justify-center">Loading...</div> 24 } 25 26 const selectedBot = listData.bots.find((team) => team.id === teamIdParam) ?? listData.bots[0]; 27 if (!selectedBot) { 28 // TODO: Redirect to register page? 29 return <div className="flex h-screen w-full items-center justify-center">Loading...</div> 30 } 31 32 return ( 33 <SettingsLayout currentTab={"rooms"} listData={listData} selectedBot={selectedBot} teamIdParam={teamIdParam}> 34 <div className="flex items-center justify-between"> 35 <h3 className="text-sm font-medium text-gray-400">Protected Rooms</h3> 36 <AddProtectedRoom filled /> 37 </div> 38 39 <ScrollArea className="h-[300px] rounded-md border border-gray-800"> 40 <ProtectedRomsList selectedBot={selectedBot} /> 41 </ScrollArea> 42 </SettingsLayout> 43 ) 44 }