Rev 3599 | Rev 3603 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react';
import { Grid, Box, Typography } from '@mui/material';
import { useFetch, usePagination } from '@shared/hooks';
import { Spinner } from '@shared/components';
import { ConversationsList, MessagesList } from '@inmail/components';
const messagesResponse = {
success: true,
data: [
{
uuid: 'b18afb55-d40e-4fd9-95a6-324a7f45e57f',
sender_name: 'Cesa Managment Solution',
sender_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_name: 'Santiago Olivera',
receiver_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
side: 'right',
message: '',
type: 'image',
filename:
'https://dev-services.leaderslinked.com/storage/b18afb55-d40e-4fd9-95a6-324a7f45e57f',
date: 'hace 1 año',
url_abuse_report:
'https://dev-services.leaderslinked.com/helpers/abuse-report/message/b18afb55-d40e-4fd9-95a6-324a7f45e57f'
},
{
uuid: 'c3b3c887-9f88-4a36-a7c8-c417f5da80ff',
sender_name: 'Cesa Managment Solution',
sender_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_name: 'Santiago Olivera',
receiver_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
side: 'right',
message: 'Buenas tardes',
type: 'text',
filename: '',
date: 'hace 1 año',
url_abuse_report:
'https://dev-services.leaderslinked.com/helpers/abuse-report/message/c3b3c887-9f88-4a36-a7c8-c417f5da80ff'
},
{
uuid: '59120c84-335f-424c-8990-db51ae7bd673',
sender_name: 'Santiago Olivera',
sender_image:
'https://dev-services.leaderslinked.com/storage/e85129fa-18eb-4149-8640-fea9ae916cdc',
sender_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
receiver_name: 'Cesa Managment Solution',
receiver_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
side: 'left',
message: '',
type: 'image',
filename:
'https://dev-services.leaderslinked.com/storage/59120c84-335f-424c-8990-db51ae7bd673',
date: 'hace 1 año',
url_abuse_report: ''
},
{
uuid: '71c1356d-b5dc-413a-8f8e-ed087f99b6e3',
sender_name: 'Santiago Olivera',
sender_image:
'https://dev-services.leaderslinked.com/storage/e85129fa-18eb-4149-8640-fea9ae916cdc',
sender_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
receiver_name: 'Cesa Managment Solution',
receiver_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
side: 'left',
message: 'buenas tardes',
type: 'text',
filename: '',
date: 'hace 1 año',
url_abuse_report: ''
},
{
uuid: 'c484b564-3d69-42bf-b6c4-12dfa6230614',
sender_name: 'Santiago Olivera',
sender_image:
'https://dev-services.leaderslinked.com/storage/e85129fa-18eb-4149-8640-fea9ae916cdc',
sender_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
receiver_name: 'Cesa Managment Solution',
receiver_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
side: 'left',
message: 'Test',
type: 'text',
filename: '',
date: 'hace 1 año',
url_abuse_report: ''
},
{
uuid: 'f29723fd-dc2a-4b06-8c8e-e0e0cfe36cd1',
sender_name: 'Cesa Managment Solution',
sender_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_name: 'Santiago Olivera',
receiver_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
side: 'right',
message:
'buenas tardes\r\n\r\nbuenas tardesbuenas tardes\r\n\r\nbuenas tardesbuenas tardes\r\n\r\nbuenas tardesbuenas tardesbuenas tardes',
type: 'document',
filename:
'https://dev-services.leaderslinked.com/storage/f29723fd-dc2a-4b06-8c8e-e0e0cfe36cd1',
date: 'hace 1 año',
url_abuse_report:
'https://dev-services.leaderslinked.com/helpers/abuse-report/message/f29723fd-dc2a-4b06-8c8e-e0e0cfe36cd1'
},
{
uuid: '86453fcf-ac3b-4228-9007-9dbf100976ef',
sender_name: 'Cesa Managment Solution',
sender_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_name: 'Santiago Olivera',
receiver_image:
'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
side: 'right',
message:
'hola,hola,hola,hola,hola,hola,hola,\r\nhola,hola,hola,\r\n\r\nhola,hola,\r\nhola,hola,hola,\r\n\r\nhola,hola,hola,',
type: 'image',
filename:
'https://dev-services.leaderslinked.com/storage/86453fcf-ac3b-4228-9007-9dbf100976ef',
date: 'hace 1 año',
url_abuse_report:
'https://dev-services.leaderslinked.com/helpers/abuse-report/message/86453fcf-ac3b-4228-9007-9dbf100976ef'
}
],
pagination: {
pageCount: 1,
itemCountPerPage: 10,
first: 1,
current: 1,
last: 1,
pagesInRange: {
1: 1
},
firstPageInRange: 1,
lastPageInRange: 1,
currentItemCount: 7,
totalItemCount: 7,
firstItemNumber: 1,
lastItemNumber: 7
}
};
export function InmailPage() {
const [selectedConversation, setSelectedConversation] = useState(null);
const { data: conversations, loading } = useFetch('/email');
const {
items: messages,
loading: loadingMessages,
nextPage,
hasMore
} = usePagination(selectedConversation?.messages_url, {
enableInfiniteScroll: true
});
// Para demostración, usar datos de prueba cuando no hay conversación seleccionada
const displayMessages = selectedConversation ? messages : messagesResponse.data;
const displayLoading = selectedConversation ? loadingMessages : false;
if (loading || !conversations) {
return <Spinner />;
}
return (
<Grid container spacing={2} sx={{ height: 'calc(100vh - 100px)' }}>
<Grid item xs={12} md={3}>
<ConversationsList
conversations={conversations}
onSelectConversation={setSelectedConversation}
/>
</Grid>
<Grid item xs={12} md={9}>
<Box sx={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
{selectedConversation && (
<Box sx={{ p: 2, borderBottom: 1, borderColor: 'divider' }}>
<Typography variant='h6'>Conversación con {selectedConversation.name}</Typography>
</Box>
)}
<Box sx={{ flex: 1, overflow: 'hidden' }}>
<MessagesList
messages={displayMessages}
onLoadMore={nextPage}
loading={displayLoading}
hasMore={hasMore}
/>
</Box>
</Box>
</Grid>
</Grid>
);
}