import { useState } from "react"; import { useSelector } from "react-redux"; import { FiUserPlus, FiMessageSquare, FiX } from "react-icons/fi"; import { getUserColor } from "../../utils/userColor"; function UserProfilePopup({ user, isDark, onClose, onAddFriend, onSendMessage, }) { const [messageInput, setMessageInput] = useState(""); const userColor = getUserColor(user.name, user.color); const onlineUsers = useSelector((state) => state.dm.onlineUsers); const isOnlineRealtime = user?.id && onlineUsers.includes(String(user.id)); const isOnline = isOnlineRealtime || user?.isOnline || false; const handleSendMessage = () => { if (messageInput.trim() && onSendMessage) { onSendMessage(user, messageInput); setMessageInput(""); } }; return (
e.stopPropagation()} > {/* Close button */} {/* Banner */}
{/* Avatar */}
{user.avatar}
{/* User Info */}
{user.name}
{user.email || `${user.name.toLowerCase()}@vinclassroom.edu.vn`}
{/* Mutual Friends */} {user.mutualFriends !== undefined && (
Bạn chung
{user.mutualFriends} bạn chung
)} {/* Shared Spaces */} {user.sharedSpaces && user.sharedSpaces.length > 0 && (
Space chung
{user.sharedSpaces.map((space) => ( {space} ))}
)} {/* Action Buttons */}
{!user.isFriend && onAddFriend && ( )} {onSendMessage && ( )}
{/* Quick DM Box */} {onSendMessage && (
Nhắn tin nhanh
setMessageInput(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter" && messageInput.trim()) handleSendMessage(); }} />
)}
); } export default UserProfilePopup;