import React, { useEffect, useState, useRef } from "react"; import { useNavigate } from "react-router-dom"; import "./css/Chat.css"; import { FaPaperPlane, FaSmile } from "react-icons/fa"; const emojis = [ "๐", "๐", "๐", "๐คฃ", "๐", "๐", "๐ ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ฅฐ", "๐", "๐", "๐", "๐", "๐ค", "๐คฉ", "๐ค", "๐", "๐", "๐ถ", "๐", "๐", "๐ฃ", "๐ฅ", "๐ฎ", "๐ค", "๐ฏ", "๐ช", "๐ซ", "๐ด", "๐", "๐", "๐", "๐คช", "๐คจ", "๐", "๐ค", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐ก", "๐คฌ", "๐ฑ", "๐จ", "๐ง", "๐", "๐ฅณ", "๐ฅบ", "๐ป", "๐ผ", "๐ฝ", "๐", "๐", "๐", "๐", "๐ป", "๐ฝ", ]; const Chat = () => { const [interlocutorId, setInterlocutorId] = useState(0); const [messages, setMessages] = useState([]); const [newMessage, setNewMessage] = useState(""); const [showEmojiPicker, setShowEmojiPicker] = useState(false); const socket = useRef(null); const chatRef = useRef(null); const navigate = useNavigate(); useEffect(() => { const id = parseInt(localStorage.getItem("interlocutorId"), 10) || 0; setInterlocutorId(id); socket.current = new WebSocket("ws://localhost:8080"); socket.current.onopen = () => { console.log("WebSocket connected"); socket.current.send( JSON.stringify({ type: "register", userId: "yourUserId" }) ); }; socket.current.onmessage = (event) => { const receivedData = JSON.parse(event.data); setMessages((prev) => [...prev, receivedData]); }; socket.current.onerror = (event) => { console.error("WebSocket error observed:", event); }; socket.current.onclose = () => { console.log("WebSocket closed"); }; return () => { socket.current.close(); }; }, []); useEffect(() => { if (chatRef.current) { chatRef.current.scrollTop = chatRef.current.scrollHeight; } }, [messages]); const sendMessage = () => { if (newMessage.trim()) { const messageData = { type: "message", senderId: "yourUserId", recipientId: interlocutorId, message: newMessage, timestamp: new Date().toLocaleTimeString(), }; socket.current.send(JSON.stringify(messageData)); setMessages((prev) => [...prev, messageData]); setNewMessage(""); } }; const handleKeyPress = (e) => { if (e.key === "Enter") { sendMessage(); } }; const handleEmojiSelect = (emoji) => { setNewMessage((prev) => prev + emoji); setShowEmojiPicker(false); }; return (