Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
67 stevensc 1
import React, { useEffect, useState } from "react";
2
import { axios } from "../../../utils";
3
import { useSelector } from "react-redux";
5 stevensc 4
 
67 stevensc 5
import { addNotification } from "../../../redux/notification/notification.actions";
5 stevensc 6
 
67 stevensc 7
import EmptySection from "../../UI/EmptySection";
8
import { Link } from "react-router-dom";
5 stevensc 9
 
10
export default function HomeNews({ currentPost }) {
67 stevensc 11
  const labels = useSelector(({ intl }) => intl.labels);
12
  const [news, setNews] = useState([]);
5 stevensc 13
 
14
  const loadNews = () => {
15
    axios
67 stevensc 16
      .get("/helpers/posts")
5 stevensc 17
      .then(({ data: response }) => {
67 stevensc 18
        const { data, success } = response.data;
19
 
20
        if (!success) {
5 stevensc 21
          addNotification({
67 stevensc 22
            style: "danger",
23
            msg: data,
24
          });
25
          return;
5 stevensc 26
        }
67 stevensc 27
 
28
        setNews(data);
5 stevensc 29
      })
30
      .catch(() => {
31
        addNotification({
67 stevensc 32
          style: "danger",
33
          msg: "Disculpe, ha ocurrido un error buscando novedades",
34
        });
35
      });
36
  };
5 stevensc 37
 
38
  useEffect(() => {
67 stevensc 39
    loadNews();
40
  }, []);
5 stevensc 41
 
42
  return (
43
    <div className="posts-widget">
44
      <h3>{labels.posts}</h3>
45
      <div className="posts-list">
46
        {!news.length ? (
47
          <EmptySection message={labels.not_available_posts} />
48
        ) : (
49
          news.map((element) => {
50
            if (element.link.includes(currentPost)) {
67 stevensc 51
              return null;
5 stevensc 52
            }
53
 
54
            return (
55
              <div key={element.title} className="post-item">
56
                <Link to={element.link}>
57
                  <img src={element.image} alt={`${element.title} image`} />
58
                </Link>
59
                <div className="post-info">
60
                  <Link to={element.link}>
61
                    <h4 title={element.title}>{element.title}</h4>
62
                  </Link>
63
                  <span>{element.date}</span>
64
                </div>
65
              </div>
67 stevensc 66
            );
5 stevensc 67
          })
68
        )}
69
      </div>
70
    </div>
67 stevensc 71
  );
5 stevensc 72
}