import { Globe, Trash2, ExternalLink, Hash, Users, Video, VideoOff, AlertTriangle } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { useLanguage } from '../contexts/LanguageContext'; import api from '../services/api'; import toast from 'react-hot-toast'; export default function FederatedRoomCard({ room, onRemove }) { const { t } = useLanguage(); const navigate = useNavigate(); const isDeleted = room.deleted === 1 || room.deleted === true; const handleJoin = (e) => { e.stopPropagation(); if (isDeleted) return; window.open(room.join_url, '_blank'); }; const handleRemove = async (e) => { e.stopPropagation(); if (!confirm(t('federation.removeRoomConfirm'))) return; try { await api.delete(`/federation/federated-rooms/${room.id}`); toast.success(t('federation.roomRemoved')); onRemove?.(); } catch { toast.error(t('federation.roomRemoveFailed')); } }; const recordingOn = room.allow_recording === 1 || room.allow_recording === true; return (
navigate(`/federation/rooms/${room.id}`)}>

{room.room_name}

{isDeleted ? ( {t('federation.roomDeleted')} ) : ( {t('federation.federated')} )}

{t('federation.from')}: {room.from_user}

{/* Basic room info */}
{room.meet_id && (
{room.meet_id.slice(0, 10)}…
)}
{t('federation.maxParticipants')}:{' '} {room.max_participants > 0 ? room.max_participants : t('federation.unlimited')}
{recordingOn ? ( <>
{/* Read-only notice */}

{isDeleted ? t('federation.roomDeletedNotice') : t('federation.readOnlyNotice')}

{/* Actions */}
{!isDeleted && ( )}
); }