Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
7545 stevensc 1
import React from "react";
2
import { useEffect, useState } from "react";
3
import { useForm } from "react-hook-form";
4
import axios from "axios";
5
import Follower from "./follower/Follower";
6
import PaginationComponent from "../../shared/PaginationComponent";
7573 stevensc 7
import ContentTitle from "../../shared/ContentTitle";
7545 stevensc 8
 
9
const Followers = ({ backendVars }) => {
7806 stevensc 10
 
11
  let axiosThrottle = null;
12
 
7583 stevensc 13
  const { table_link, allowDelete } = backendVars;
7806 stevensc 14
 
7545 stevensc 15
  const [followers, setFollowers] = useState([]);
16
  const [loading, setLoading] = useState(true);
17
  const [pages, setPages] = useState(1);
18
  const [currentPage, setCurrentPage] = useState(1);
19
 
20
  const { register, getValues } = useForm();
21
 
22
  useEffect(() => {
23
    fetchFollowers();
24
    return () => {
25
      clearTimeout(axiosThrottle);
26
    };
27
  }, [currentPage]);
28
 
29
  const fetchFollowers = async () => {
30
    setLoading(true);
31
    let params = {
32
      params: {
33
        page: currentPage,
34
      },
35
    };
36
    if (getValues("search")) {
37
      params = { params: { ...params.params, search: getValues("search") } };
38
    }
7806 stevensc 39
    await axios.get(table_link, params)
7550 stevensc 40
      .then(({ data }) => {
41
        if (data.success) {
42
          setFollowers(data.data.items);
7545 stevensc 43
        }
44
      });
45
    setLoading(false);
46
  };
47
 
48
  const handleSearch = () => {
49
    clearTimeout(axiosThrottle);
50
    axiosThrottle = setTimeout(() => {
51
      fetchFollowers();
52
    }, 500);
53
  };
54
 
7806 stevensc 55
  const deleteFollower = (email) => {
56
    setFollowers(followers.filter((follower) => follower.email !== email))
57
  }
58
 
7545 stevensc 59
  const handleChangePage = (newPage) => {
60
    setCurrentPage(newPage);
61
  };
62
 
63
  return (
7573 stevensc 64
    <ContentTitle title="Seguidores">
65
      <div className="company-title">
66
        <div className="section_admin_title_buttons">
67
          <form
68
            name="form-connection-search"
69
            id="form-connection-search"
70
            onSubmit={(event) => event.preventDefault()}
71
          >
72
            <div className="form-group">
73
              <input
74
                type="text"
75
                name="search"
76
                id="search"
77
                className="form-control"
78
                placeholder="Buscar"
79
                ref={register}
80
                onChange={handleSearch}
81
              />
7545 stevensc 82
            </div>
7573 stevensc 83
          </form>
7545 stevensc 84
        </div>
7573 stevensc 85
      </div>
7545 stevensc 86
 
7573 stevensc 87
      <div className="companies-list">
88
        <div
7599 stevensc 89
          className="row"
7573 stevensc 90
          id="profiles-container"
91
          style={{
92
            position: "relative",
93
          }}
94
        >
95
          {followers.map(({ first_name, last_name, email, actions }, index) => (
96
            <Follower
97
              key={index}
98
              first_name={first_name}
99
              last_name={last_name}
100
              email={email}
101
              actions={actions}
7583 stevensc 102
              allowDelete={allowDelete}
7806 stevensc 103
              deleteFollower={deleteFollower}
7545 stevensc 104
            />
7573 stevensc 105
          ))}
106
          <PaginationComponent
107
            pages={pages}
108
            currentPage={currentPage}
109
            onChangePage={handleChangePage}
110
          />
7545 stevensc 111
        </div>
112
      </div>
7573 stevensc 113
    </ContentTitle>
7545 stevensc 114
  );
115
};
116
 
117
export default Followers;