"use client"; import { useAtom, useAtomValue } from "jotai"; import { LoaderIcon, PanelRight, TriangleAlert } from "lucide-react"; import { toast } from "sonner"; import { generatePodcast } from "@/lib/apis/podcast-apis"; import { cn } from "@/lib/utils"; import { activeChatAtom, activeChatIdAtom } from "@/atoms/chats/queries/active-chat.atom"; import { chatUIAtom } from "@/atoms/chats/active-chat-ui.atom"; import { ChatPanelView } from "./ChatPanelView"; export interface GeneratePodcastRequest { type: "CHAT" | "DOCUMENT"; ids: number[]; search_space_id: number; podcast_title?: string; user_prompt?: string; } export function ChatPanelContainer() { const { data: activeChatState, isLoading: isChatLoading, error: chatError, } = useAtomValue(activeChatAtom); const activeChatIdState = useAtomValue(activeChatIdAtom); const authToken = localStorage.getItem("surfsense_bearer_token"); const { isChatPannelOpen } = useAtomValue(chatUIAtom); const handleGeneratePodcast = async (request: GeneratePodcastRequest) => { try { if (!authToken) { throw new Error("Authentication error. Please log in again."); } await generatePodcast(request, authToken); toast.success(`Podcast generation started!`); } catch (error) { toast.error("Error generating podcast. Please log in again."); console.error("Error generating podcast:", error); } }; return activeChatIdState ? (
{isChatLoading || chatError ? (
{isChatLoading ? (
) : chatError ? (
) : null}
) : null} {!isChatLoading && !chatError && activeChatState?.chatDetails && ( )}
) : null; }