Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
2960 stevensc 1
import React, { useMemo } from 'react'
2614 stevensc 2
import { useNavigate } from 'react-router-dom'
861 stevensc 3
import { useSelector } from 'react-redux'
2960 stevensc 4
import {
5
  Avatar,
6
  List,
2963 stevensc 7
  ListItem,
2960 stevensc 8
  ListItemAvatar,
9
  ListItemButton,
10
  ListItemText
11
} from '@mui/material'
2277 stevensc 12
 
2963 stevensc 13
import { useFetch } from '@hooks'
14
 
15
import Widget from '@components/UI/Widget'
16
import EmptySection from '@components/UI/EmptySection'
17
 
5 stevensc 18
export default function HomeNews({ currentPost }) {
2960 stevensc 19
  const { data: posts } = useFetch('/helpers/posts', [])
861 stevensc 20
  const labels = useSelector(({ intl }) => intl.labels)
2614 stevensc 21
  const navigate = useNavigate()
5 stevensc 22
 
2960 stevensc 23
  const filterPosts = useMemo(
2963 stevensc 24
    () => posts?.filter((post) => !post.link.includes(currentPost)),
25
    [posts, currentPost]
2960 stevensc 26
  )
27
 
5 stevensc 28
  return (
2277 stevensc 29
    <Widget>
30
      <Widget.Header title={labels.posts} />
861 stevensc 31
 
2277 stevensc 32
      <Widget.Body>
2963 stevensc 33
        {filterPosts?.length <= 0 && (
2279 stevensc 34
          <EmptySection message={labels.not_available_posts} />
2960 stevensc 35
        )}
2279 stevensc 36
 
2960 stevensc 37
        <List sx={{ maxHeight: 285, overflow: 'auto' }}>
38
          {filterPosts.map(({ link, title, image, date }) => (
39
            <ListItem key={title}>
40
              <ListItemButton onClick={() => navigate(link)}>
41
                <ListItemAvatar>
42
                  <Avatar src={image} alt={`${title} post image`} />
43
                </ListItemAvatar>
5 stevensc 44
 
2960 stevensc 45
                <ListItemText primary={title} secondary={date} />
46
              </ListItemButton>
47
            </ListItem>
48
          ))}
2278 stevensc 49
        </List>
2277 stevensc 50
      </Widget.Body>
51
    </Widget>
861 stevensc 52
  )
5 stevensc 53
}