"use client"; import { Copy, Loader2 } from "lucide-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { publicChatApiService } from "@/lib/apis/public-chat-api.service"; import { getBearerToken } from "@/lib/auth-utils"; interface PublicChatFooterProps { shareToken: string; } export function PublicChatFooter({ shareToken }: PublicChatFooterProps) { const router = useRouter(); const [isCloning, setIsCloning] = useState(false); const handleCopyAndContinue = async () => { const token = getBearerToken(); if (!token) { const returnUrl = encodeURIComponent(`/public/${shareToken}`); router.push(`/login?returnUrl=${returnUrl}&action=clone`); return; } setIsCloning(true); try { await publicChatApiService.clonePublicChat({ share_token: shareToken, }); toast.success("Copying chat to your account...", { description: "You'll be notified when it's ready.", }); router.push("/dashboard"); } catch (error) { const message = error instanceof Error ? error.message : "Failed to copy chat"; toast.error(message); } finally { setIsCloning(false); } }; return (