Rev 3645 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react';import { Box, Typography } from '@mui/material';import { Report } from '@mui/icons-material';import { Menu } from '@shared/components';import colors from '@styles/config/colors';export const MessageItem = ({ message, onReport }) => {const renderMessageContent = () => {switch (message.type) {case 'text':return (<Typographysx={{wordBreak: 'break-word',color:message.side === 'right' ? colors.button.text.primary : colors.button.text.secondary}}>{message.message}</Typography>);case 'image':return (<Box sx={{ maxWidth: '250px', maxHeight: '250px' }}><imgsrc={message.filename}alt='Mensaje de imagen'style={{width: '100%',height: 'auto',borderRadius: '8px',objectFit: 'cover'}}/></Box>);case 'document':return (<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}><imgsrc='/images/extension/pdf.png'alt='Documento'style={{ width: '24px', height: '24px' }}/><Typography variant='body2' component='a' href={message.filename} download>Descargar documento</Typography></Box>);default:return (<Typography variant='body2' sx={{ wordBreak: 'break-word' }}>{message.message || 'Contenido no disponible'}</Typography>);}};return (<Boxsx={{display: 'flex',justifyContent: message.side === 'right' ? 'flex-end' : 'flex-start',mb: 1,px: 1}}><Boxsx={{display: 'flex',flexDirection: 'column',maxWidth: '70%',position: 'relative'}}><Typography variant='caption' sx={{ mb: 0.5 }}>{message.sender_name}</Typography><Boxsx={{backgroundColor:message.side === 'right'? colors.button.background.primary: colors.button.background.secondary,borderRadius: message.side === 'right' ? '12px 12px 4px 12px' : '12px 12px 12px 4px',padding: 0.625,position: 'relative','&:hover .message-actions': {opacity: 1}}}>{renderMessageContent()}<Box sx={{ display: 'flex', alignItems: 'center', gap: 1, marginTop: 0.5 }}><Typography variant='caption'>{message.date}</Typography>{message.abuse_report_url && (<Menu className='message-actions' style={{ opacity: 0 }}><Menu.Item onClick={() => onReport(message.abuse_report_url)}><Report sx={{ mr: 1 }} />Reportar mensaje</Menu.Item></Menu>)}</Box></Box></Box></Box>);};