"use client"; import { useState, useRef, useEffect } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "@/lib/auth"; interface ChatMessage { id: string; role: "user" | "assistant"; content: string; timestamp: Date; } export default function ChatPage() { const { token, user } = useAuth(); const router = useRouter(); const [messages, setMessages] = useState([]); const [input, setInput] = useState(""); const [loading, setLoading] = useState(false); const messagesEndRef = useRef(null); const inputRef = useRef(null); useEffect(() => { if (!token) { router.replace("/login"); } }, [token, router]); useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); }, [messages]); async function handleSend() { const text = input.trim(); if (!text || loading || !token) return; const userMsg: ChatMessage = { id: Date.now().toString(), role: "user", content: text, timestamp: new Date(), }; setMessages((prev) => [...prev, userMsg]); setInput(""); setLoading(true); try { const res = await fetch("/api/v1/chat", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}`, }, body: JSON.stringify({ message: text }), }); if (!res.ok) { throw new Error(`HTTP ${res.status}`); } const data = await res.json(); const assistantMsg: ChatMessage = { id: (Date.now() + 1).toString(), role: "assistant", content: data.reply || data.message || "Omlouvám se, nemohl jsem zpracovat vaši zprávu.", timestamp: new Date(), }; setMessages((prev) => [...prev, assistantMsg]); } catch { const errorMsg: ChatMessage = { id: (Date.now() + 1).toString(), role: "assistant", content: "Chat asistent je momentálně nedostupný. Zkuste to prosím později.", timestamp: new Date(), }; setMessages((prev) => [...prev, errorMsg]); } finally { setLoading(false); inputRef.current?.focus(); } } function handleKeyDown(e: React.KeyboardEvent) { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); handleSend(); } } if (!token) return null; return (
{/* Chat header */}

AI Asistent

Zeptejte se na cokoliv ohledně vašich úkolů

{/* Messages area */}
{messages.length === 0 && (

Začněte konverzaci

Napište zprávu a AI asistent vám pomůže s úkoly

)} {messages.map((msg) => (

{msg.content}

{msg.timestamp.toLocaleTimeString("cs-CZ", { hour: "2-digit", minute: "2-digit" })}

))} {loading && (
)}
{/* Input area */}