import { useState, useEffect, useRef } from "react"; import { useAppState } from "../../state"; import { useDM } from "../../hooks/useDM"; import { ChatMessages } from "./ChatMessages"; import defaultAvatar from "../../../resources/images/default-avatar.png"; export function DMPanel() { const { chat } = useAppState(); const { sendDMMessage, isLoadingHistory } = useDM(); const [message, setMessage] = useState(""); const messagesEndRef = useRef(null); const activeDm = chat.activeDm; // Scroll to bottom when messages change useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); }, [chat.messages]); const handleSendMessage = async (e: React.FormEvent) => { e.preventDefault(); if (!message.trim() || !activeDm?.publicKey) return; try { await sendDMMessage(activeDm.userId, activeDm.publicKey, message); setMessage(""); } catch (error) { console.error("Failed to send DM:", error); } }; const handleProfileClick = () => { // TODO: Implement profile dialog for DM user console.log("Profile clicked for DM user:", activeDm?.username); }; if (!activeDm) { return (
Avatar

Выберите пользователя

Выберите пользователя для начала разговора

Выберите пользователя из списка для начала личных сообщений
); } return (
Avatar

{activeDm.username}

Личные сообщения

Свернуть чат
{isLoadingHistory ? (
Загрузка сообщений...
) : ( <>
)}
setMessage(e.target.value)} />
); }