import { useEffect } from "react"; import { useDM } from "../../hooks/useDM"; import { useAppState } from "../../state"; import { fetchUserPublicKey } from "../../../api/dmApi"; import defaultAvatar from "../../../resources/images/default-avatar.png"; export function DMUsersList() { const { dmUsers, isLoadingUsers, loadUsers } = useDM(); const { chat, switchToDM } = useAppState(); useEffect(() => { if (chat.activeTab === "dms") { loadUsers(); } }, [chat.activeTab, loadUsers]); if (isLoadingUsers) { return ( ); } if (dmUsers.length === 0) { return ( ); } const handleUserClick = async (user: any) => { if (!user.publicKey) { // Get public key if not already loaded const authToken = useAppState.getState().user.authToken; if (!authToken) return; const publicKey = await fetchUserPublicKey(user.id, authToken); if (publicKey) { user.publicKey = publicKey; } else { console.error("Failed to get public key for user:", user.id); return; } } await switchToDM({ userId: user.id, username: user.username, publicKey: user.publicKey, profilePicture: user.profile_picture, online: user.online || false }); }; return ( {dmUsers.map((user) => ( handleUserClick(user)} style={{ cursor: "pointer" }} > {user.username} { (e.target as HTMLImageElement).src = defaultAvatar; }} /> {user.unreadCount > 0 && ( {user.unreadCount} )} ))} ); }