"use client"; import { Suspense, useEffect, useState } from "react"; import { SWRConfig } from "swr"; import { ChatbotContainer } from "@/components/chatbot/chatbot-container"; import { ChatbotProvider, useChatbot, } from "@/components/chatbot/chatbot-context"; import { AppSidebar } from "@/components/layout/app-sidebar"; import { MiniPlayer } from "@/components/media/mini-player"; import { GuildSelector } from "@/components/shared/guild-selector"; import { Separator } from "@/components/ui/separator"; import { SidebarInset, SidebarProvider, SidebarTrigger, } from "@/components/ui/sidebar"; import { MediaPlayerProvider } from "@/lib/hooks/use-media-player"; import { useWebSocket, WsProvider } from "@/lib/ws/context"; function ChatbotGuildSync({ guildId }: { guildId: string }) { const { setGuildId } = useChatbot(); useEffect(() => { setGuildId(guildId); }, [guildId, setGuildId]); return null; } function ChatbotExpressionSync() { const ws = useWebSocket(); const { setExpression } = useChatbot(); useEffect(() => { const unsub1 = ws.on("message_created", (data: any) => { if (data.ai_status === "flagged" || data.ai_status === "warn") { setExpression("surprise"); setTimeout(() => setExpression("idle"), 2000); } }); const unsub2 = ws.on("voice_active_user", () => { setExpression("listening"); }); return () => { unsub1(); unsub2(); }; }, [ws, setExpression]); return null; } export default function DashboardLayout({ children, }: { children: React.ReactNode; }) { const [guildId, setGuildId] = useState(""); return ( (err as { statusCode?: number })?.statusCode !== 404, }} >
Overview
setGuildId(g ?? "")} />
} > {children}
); }