import { PanelRight } from "lucide-react"; import { useActionState, useContext, useTransition } from "react"; import { toast } from "sonner"; import { cn } from "@/lib/utils"; import { chatInterfaceContext } from "../ChatInterface"; import type { GeneratePodcastRequest } from "./actions"; import { ChatPanelView } from "./ChatPanelView"; export function ChatPanelContainer() { const context = useContext(chatInterfaceContext); if (!context) { throw new Error("chatInterfaceContext must be used within a ChatProvider"); } const { isChatPannelOpen, setIsChatPannelOpen, chat_id: chatId, setPodcast } = context; const generatePodcast = async (request: GeneratePodcastRequest) => { try { const { podcast_title = "SurfSense Podcast" } = request; const response = await fetch( `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/podcasts/generate/`, { method: "POST", headers: { Authorization: `Bearer ${localStorage.getItem("surfsense_bearer_token")}`, "Content-Type": "application/json", }, body: JSON.stringify({ ...request, podcast_title }), } ); if (!response.ok) { const errorData = await response.json().catch(() => ({})); throw new Error(errorData.detail || "Failed to generate podcast"); } const result = await response.json(); setPodcast(result); toast.success(`Podcast generation started!`); } catch (error) { console.error("Error generating podcast:", error); console.log(error); } finally { } }; return chatId && chatId !== "" ? (
) : null; }