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