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 (

Chat with ... (id = {interlocutorId})

{" "} {}
{messages.map((msg, index) => (
{msg.senderId === "yourUserId" ? "You" : "Interlocutor"}:{" "} {msg.message}
{msg.timestamp}
))}
setNewMessage(e.target.value)} placeholder="Type a message..." className="chat-input" onKeyPress={handleKeyPress} /> {showEmojiPicker && (
{emojis.map((emoji, index) => ( handleEmojiSelect(emoji)} style={{ cursor: "pointer", padding: "5px" }} > {emoji} ))}
)}
); }; export default Chat;