import { VideoroomChatDto, VideoroomParticipantDto, VideoroomSettingsDto, MessageType, } from '@/proxy/videoroom/models' import { useRef, useEffect, type FormEvent } from 'react' import { FaTimes, FaUsers, FaUser, FaBullhorn, FaPaperPlane } from 'react-icons/fa' import { Button } from '@/components/ui' import { useLocalization } from '@/utils/hooks/useLocalization' import Input from '@/components/ui/Input' interface ChatPanelProps { user: { id: string; name: string; role: string } participants: VideoroomParticipantDto[] chatMessages: VideoroomChatDto[] newMessage: string setNewMessage: (msg: string) => void messageMode: MessageType setMessageMode: (mode: MessageType) => void selectedRecipient: { id: string; name: string } | null setSelectedRecipient: (recipient: { id: string; name: string } | null) => void onSendMessage: (e: FormEvent) => void onClose: () => void formatTime: (timestamp: string) => string classSettings: VideoroomSettingsDto } const ChatPanel = ({ user, participants, chatMessages, newMessage, setNewMessage, messageMode, setMessageMode, selectedRecipient, setSelectedRecipient, onSendMessage, onClose, formatTime, classSettings, }: ChatPanelProps) => { const { translate } = useLocalization() const messagesEndRef = useRef(null) useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }) }, [chatMessages]) const availableRecipients = participants.filter((p) => p.id !== user.id) return (
{/* Header */}

{translate('::App.Platform.SohbetAnswer')}

{/* Mesaj Modu */}
{classSettings.allowPrivateMessages && ( )} {user.role === 'teacher' && ( )}
{messageMode === 'private' && ( )}
{/* Mesaj Listesi */}
{chatMessages.length === 0 ? (
{translate('::App.VideoRoom.NoMessages')}
) : ( chatMessages.map((m) => (
{m.senderId !== user.id && (
{m.senderName} {m.isTeacher && ` (${translate('::App.VideoRoom.Teacher')})`}
)}
{m.message}
{formatTime(m.timestamp)}
)) )}
{/* Mesaj Gönderme */}
setNewMessage(e.target.value)} placeholder={translate('::App.VideoRoom.MessagePlaceholder')} className="flex-1 px-3 py-2 border border-gray-300 rounded-lg text-sm" />
) } export default ChatPanel