/** * ========================================================================= * PLATEFORME ECO-PANNEAU.FR - VERSION 1.0.0 * Composant : Modale liste des conversations riverains (Vue Client) * ========================================================================= */ const FallbackNull = () => null; const FallbackDataCard = ({children, className, onClick}) => (
{children}
); window.pano_ClientRiverainsListModal = ({ panneauId, data, myClientData, onClose }) => { // Sécurisation de l'appel aux icônes const { MessageCircleIcon, MessageSquareIcon } = window.pano_getIcons?.() || {}; const Modal = window.pano_Modal || FallbackNull; const IconBadge = window.pano_IconBadge || FallbackNull; const NotificationBadge = window.pano_NotificationBadge || FallbackNull; const DataCard = window.pano_DataCard || FallbackDataCard; const { pendingInvites, visiblePanels } = window.pano_getPanelAccessRights ? window.pano_getPanelAccessRights(data.panneaux || [], myClientData.id) : { pendingInvites:[], visiblePanels:[] }; const threads = window.pano_buildClientChatThreads ? window.pano_buildClientChatThreads(data.interactions || [], myClientData, visiblePanels, pendingInvites) : []; const riverainThreads = threads.filter(t => t.panneauId === panneauId && t.type === 'riverain'); const openChat = (id) => { const u = new URL(window.location); u.searchParams.set('chat_id', id); window.history.pushState({ chat_id: id }, '', u); window.dispatchEvent(new Event('popstate')); }; return (

Liste des conversations individuelles avec les riverains concernant ce projet.

{riverainThreads.map(t => { const lastMsg = t.messages.length > 0 ? t.messages[t.messages.length - 1] : null; return ( openChat(t.id)} className="cursor-pointer hover:border-emerald-300 transition gap-2 relative overflow-hidden group p-4" >
{IconBadge && }

{t.targetEmail}

Riverain

0 ? 'text-slate-800 font-bold' : 'text-slate-600'}`}> {lastMsg ? lastMsg.detail.replace(/\[ATTACHMENT:[^\]]+\]/g, '[Pièce jointe]').replace(/<[^>]*>?/gm, '') : Nouvelle conversation...}

{lastMsg ? new Date(String(lastMsg.created_at || '').replace(' ', 'T')).toLocaleString('fr-FR') : ''}
); })} {riverainThreads.length === 0 && (
{MessageSquareIcon && }

Aucun message de riverain pour le moment.

)}
); }; /* EOF ========== [_react/_clients_modals_riverains.jsx] */