Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3603 | Rev 3605 | 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
 
3577 stevensc 9
export function InmailPage() {
3580 stevensc 10
  const [selectedConversation, setSelectedConversation] = useState(null);
11
 
3597 stevensc 12
  const { data: conversations, loading } = useFetch('/email');
3604 stevensc 13
 
3599 stevensc 14
  const {
15
    items: messages,
3604 stevensc 16
    loading: loadingMessages,
17
    lastElementRef
18
  } = usePagination(selectedConversation?.messages_url);
3577 stevensc 19
 
3578 stevensc 20
  if (loading || !conversations) {
3577 stevensc 21
    return <Spinner />;
22
  }
23
 
24
  return (
3599 stevensc 25
    <Grid container spacing={2} sx={{ height: 'calc(100vh - 100px)' }}>
3577 stevensc 26
      <Grid item xs={12} md={3}>
3580 stevensc 27
        <ConversationsList
28
          conversations={conversations}
29
          onSelectConversation={setSelectedConversation}
3577 stevensc 30
        />
31
      </Grid>
32
      <Grid item xs={12} md={9}>
3599 stevensc 33
        <Box sx={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
34
          {selectedConversation && (
35
            <Box sx={{ p: 2, borderBottom: 1, borderColor: 'divider' }}>
36
              <Typography variant='h6'>Conversación con {selectedConversation.name}</Typography>
37
            </Box>
38
          )}
39
          <Box sx={{ flex: 1, overflow: 'hidden' }}>
40
            <MessagesList
3604 stevensc 41
              messages={messages}
42
              loading={loadingMessages}
43
              lastElementRef={lastElementRef}
3599 stevensc 44
            />
45
          </Box>
46
        </Box>
3577 stevensc 47
      </Grid>
48
    </Grid>
49
  );
50
}