import React, { useMemo } from 'react'; import { useQuery } from 'convex/react'; import { api } from '../../../../convex/_generated/api'; import { useOnlineUsers } from '../contexts/PresenceContext'; import Tooltip from './Tooltip'; const ChatHeader = ({ channelName, channelType, channelTopic, channelId, onToggleMembers, showMembers, onTogglePinned, serverName, isMobile, onMobileBack, onStartCall, isDMCallActive, onOpenMembersScreen, // Search props searchQuery, onSearchQueryChange, onSearchSubmit, onSearchFocus, onSearchBlur, searchInputRef, searchActive, }) => { const isDM = channelType === 'dm'; const searchPlaceholder = isDM ? 'Search' : `Search ${serverName || 'Server'}`; // Query members on mobile text channels only for online count const shouldQueryMembers = isMobile && !isDM && channelId; const members = useQuery( api.members.getChannelMembers, shouldQueryMembers ? { channelId } : "skip" ) || []; const { resolveStatus } = useOnlineUsers(); const onlineCount = useMemo(() => { if (!shouldQueryMembers) return 0; return members.filter(m => resolveStatus(m.status, m.id) !== 'offline').length; }, [members, resolveStatus, shouldQueryMembers]); const handleSearchKeyDown = (e) => { if (e.key === 'Enter') { e.preventDefault(); onSearchSubmit?.(); } if (e.key === 'Escape') { e.preventDefault(); onSearchBlur?.(); e.target.blur(); } }; return (