Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3598 | Rev 3602 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3599 stevensc 1
import React, { useState } from 'react';
2
import { Grid, Box, Typography } from '@mui/material';
3577 stevensc 3
 
3599 stevensc 4
import { useFetch, usePagination } from '@shared/hooks';
3581 stevensc 5
 
3580 stevensc 6
import { Spinner } from '@shared/components';
3599 stevensc 7
import { ConversationsList, MessagesList } from '@inmail/components';
3580 stevensc 8
 
3599 stevensc 9
const messagesResponse = {
10
  success: true,
11
  data: [
12
    {
13
      uuid: 'b18afb55-d40e-4fd9-95a6-324a7f45e57f',
14
      sender_name: 'Cesa Managment Solution',
15
      sender_image:
16
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
17
      sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
18
      receiver_name: 'Santiago Olivera',
19
      receiver_image:
20
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
21
      receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
22
      side: 'right',
23
      message: '',
24
      type: 'image',
25
      filename:
26
        'https://dev-services.leaderslinked.com/storage/b18afb55-d40e-4fd9-95a6-324a7f45e57f',
27
      date: 'hace 1 año',
28
      url_abuse_report:
29
        'https://dev-services.leaderslinked.com/helpers/abuse-report/message/b18afb55-d40e-4fd9-95a6-324a7f45e57f'
30
    },
31
    {
32
      uuid: 'c3b3c887-9f88-4a36-a7c8-c417f5da80ff',
33
      sender_name: 'Cesa Managment Solution',
34
      sender_image:
35
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
36
      sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
37
      receiver_name: 'Santiago Olivera',
38
      receiver_image:
39
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
40
      receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
41
      side: 'right',
42
      message: 'Buenas tardes',
43
      type: 'text',
44
      filename: '',
45
      date: 'hace 1 año',
46
      url_abuse_report:
47
        'https://dev-services.leaderslinked.com/helpers/abuse-report/message/c3b3c887-9f88-4a36-a7c8-c417f5da80ff'
48
    },
49
    {
50
      uuid: '59120c84-335f-424c-8990-db51ae7bd673',
51
      sender_name: 'Santiago Olivera',
52
      sender_image:
53
        'https://dev-services.leaderslinked.com/storage/e85129fa-18eb-4149-8640-fea9ae916cdc',
54
      sender_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
55
      receiver_name: 'Cesa Managment Solution',
56
      receiver_image:
57
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
58
      receiver_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
59
      side: 'left',
60
      message: '',
61
      type: 'image',
62
      filename:
63
        'https://dev-services.leaderslinked.com/storage/59120c84-335f-424c-8990-db51ae7bd673',
64
      date: 'hace 1 año',
65
      url_abuse_report: ''
66
    },
67
    {
68
      uuid: '71c1356d-b5dc-413a-8f8e-ed087f99b6e3',
69
      sender_name: 'Santiago Olivera',
70
      sender_image:
71
        'https://dev-services.leaderslinked.com/storage/e85129fa-18eb-4149-8640-fea9ae916cdc',
72
      sender_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
73
      receiver_name: 'Cesa Managment Solution',
74
      receiver_image:
75
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
76
      receiver_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
77
      side: 'left',
78
      message: 'buenas tardes',
79
      type: 'text',
80
      filename: '',
81
      date: 'hace 1 año',
82
      url_abuse_report: ''
83
    },
84
    {
85
      uuid: 'c484b564-3d69-42bf-b6c4-12dfa6230614',
86
      sender_name: 'Santiago Olivera',
87
      sender_image:
88
        'https://dev-services.leaderslinked.com/storage/e85129fa-18eb-4149-8640-fea9ae916cdc',
89
      sender_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
90
      receiver_name: 'Cesa Managment Solution',
91
      receiver_image:
92
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
93
      receiver_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
94
      side: 'left',
95
      message: 'Test',
96
      type: 'text',
97
      filename: '',
98
      date: 'hace 1 año',
99
      url_abuse_report: ''
100
    },
101
    {
102
      uuid: 'f29723fd-dc2a-4b06-8c8e-e0e0cfe36cd1',
103
      sender_name: 'Cesa Managment Solution',
104
      sender_image:
105
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
106
      sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
107
      receiver_name: 'Santiago Olivera',
108
      receiver_image:
109
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
110
      receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
111
      side: 'right',
112
      message:
113
        'buenas tardes\r\n\r\nbuenas tardesbuenas tardes\r\n\r\nbuenas tardesbuenas tardes\r\n\r\nbuenas tardesbuenas tardesbuenas tardes',
114
      type: 'document',
115
      filename:
116
        'https://dev-services.leaderslinked.com/storage/f29723fd-dc2a-4b06-8c8e-e0e0cfe36cd1',
117
      date: 'hace 1 año',
118
      url_abuse_report:
119
        'https://dev-services.leaderslinked.com/helpers/abuse-report/message/f29723fd-dc2a-4b06-8c8e-e0e0cfe36cd1'
120
    },
121
    {
122
      uuid: '86453fcf-ac3b-4228-9007-9dbf100976ef',
123
      sender_name: 'Cesa Managment Solution',
124
      sender_image:
125
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
126
      sender_profile: '/profile/view/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
127
      receiver_name: 'Santiago Olivera',
128
      receiver_image:
129
        'https://dev-services.leaderslinked.com/storage/97e43a0a-5a85-4021-8bff-167d60e2a0f2',
130
      receiver_profile: '/profile/view/e85129fa-18eb-4149-8640-fea9ae916cdc',
131
      side: 'right',
132
      message:
133
        '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,',
134
      type: 'image',
135
      filename:
136
        'https://dev-services.leaderslinked.com/storage/86453fcf-ac3b-4228-9007-9dbf100976ef',
137
      date: 'hace 1 año',
138
      url_abuse_report:
139
        'https://dev-services.leaderslinked.com/helpers/abuse-report/message/86453fcf-ac3b-4228-9007-9dbf100976ef'
140
    }
141
  ],
142
  pagination: {
143
    pageCount: 1,
144
    itemCountPerPage: 10,
145
    first: 1,
146
    current: 1,
147
    last: 1,
148
    pagesInRange: {
149
      1: 1
150
    },
151
    firstPageInRange: 1,
152
    lastPageInRange: 1,
153
    currentItemCount: 7,
154
    totalItemCount: 7,
155
    firstItemNumber: 1,
156
    lastItemNumber: 7
157
  }
158
};
159
 
3577 stevensc 160
export function InmailPage() {
3580 stevensc 161
  const [selectedConversation, setSelectedConversation] = useState(null);
162
 
3597 stevensc 163
  const { data: conversations, loading } = useFetch('/email');
3599 stevensc 164
  const {
165
    items: messages,
166
    loading: loadingMessages,
167
    nextPage
168
  } = usePagination(selectedConversation?.messages_url, {
169
    enableInfiniteScroll: true
170
  });
3577 stevensc 171
 
3599 stevensc 172
  // Para demostración, usar datos de prueba cuando no hay conversación seleccionada
173
  const displayMessages = selectedConversation ? messages : messagesResponse.data;
174
  const displayLoading = selectedConversation ? loadingMessages : false;
3580 stevensc 175
 
3578 stevensc 176
  if (loading || !conversations) {
3577 stevensc 177
    return <Spinner />;
178
  }
179
 
180
  return (
3599 stevensc 181
    <Grid container spacing={2} sx={{ height: 'calc(100vh - 100px)' }}>
3577 stevensc 182
      <Grid item xs={12} md={3}>
3580 stevensc 183
        <ConversationsList
184
          conversations={conversations}
185
          onSelectConversation={setSelectedConversation}
3577 stevensc 186
        />
187
      </Grid>
188
      <Grid item xs={12} md={9}>
3599 stevensc 189
        <Box sx={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
190
          {selectedConversation && (
191
            <Box sx={{ p: 2, borderBottom: 1, borderColor: 'divider' }}>
192
              <Typography variant='h6'>Conversación con {selectedConversation.name}</Typography>
193
            </Box>
194
          )}
195
          <Box sx={{ flex: 1, overflow: 'hidden' }}>
196
            <MessagesList
197
              messages={displayMessages}
198
              onLoadMore={nextPage}
199
              loading={displayLoading}
200
            />
201
          </Box>
202
        </Box>
3577 stevensc 203
      </Grid>
204
    </Grid>
205
  );
206
}