page.tsx (2215B)
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 { Label } from "@/components/ui/label"; 6 import { Input } from "@/components/ui/input"; 7 import { Button } from "@/components/ui/button"; 8 import { Trash2 } from "lucide-react"; 9 10 export default async function BotSettingsPage({ 11 searchParams, 12 }: { 13 searchParams: Promise<{ [key: string]: string | string[] | undefined }> 14 }) { 15 const teamIdParam = (await searchParams).team as string | undefined; 16 const cookieStore = await cookies() 17 const session: User = JSON.parse(cookieStore.get("d4all_session")?.value || "{}") 18 if (!session.token) { 19 return <div className="flex h-screen w-full items-center justify-center">Loading...</div> 20 } 21 const listData = await listBots(session.matrixId, session.token); 22 23 if (!listData) { 24 return <div className="flex h-screen w-full items-center justify-center">Loading...</div> 25 } 26 27 const selectedBot = listData.bots.find((team) => team.id === teamIdParam) ?? listData.bots[0]; 28 if (!selectedBot) { 29 // TODO: Redirect to register page? 30 return <div className="flex h-screen w-full items-center justify-center">Loading...</div> 31 } 32 33 return ( 34 <SettingsLayout currentTab={"settings"} listData={listData} selectedBot={selectedBot} teamIdParam={teamIdParam}> 35 <div className="space-y-4"> 36 <div className="space-y-2"> 37 <Label htmlFor="bot-name">Bot Name</Label> 38 <Input id="bot-name" defaultValue={selectedBot.displayName} className="bg-gray-900 border-gray-800" /> 39 </div> 40 <div className="pt-4 flex justify-between"> 41 <Button variant="outline" className="border-red-500 text-red-400 hover:bg-red-950 hover:text-red-300"> 42 <Trash2 className="mr-2 h-4 w-4" /> 43 Delete Bot 44 </Button> 45 <Button className="bg-purple-600 text-white hover:bg-purple-700">Save Changes</Button> 46 </div> 47 </div> 48 </SettingsLayout> 49 ) 50 }