Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2885 | Rev 2963 | 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'
5 stevensc 4
 
2780 stevensc 5
import { useFetch } from '@hooks'
5 stevensc 6
 
2885 stevensc 7
import Widget from '@components/UI/Widget'
8
import EmptySection from '@components/UI/EmptySection'
2960 stevensc 9
import {
10
  Avatar,
11
  List,
12
  ListItemAvatar,
13
  ListItemButton,
14
  ListItemText
15
} from '@mui/material'
16
import { ListItem } from '@components/UI/List'
2277 stevensc 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(
24
    () => posts?.filter((post) => post.link.includes(currentPost)),
25
    [currentPost, posts]
26
  )
27
 
5 stevensc 28
  return (
2277 stevensc 29
    <Widget>
30
      <Widget.Header title={labels.posts} />
861 stevensc 31
 
2277 stevensc 32
      <Widget.Body>
2960 stevensc 33
        {posts?.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
}