draupnir4all-web

git clone git://archive.git.mtrnord.blog/MTRNord/draupnir4all-web.git
Log | Files | Refs | README | LICENSE

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 }