Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 7583 | Rev 7599 | 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 }) => {
10
  // backendVars destructuring
7583 stevensc 11
  const { table_link, allowDelete } = backendVars;
7545 stevensc 12
  // states
13
  const [followers, setFollowers] = useState([]);
14
  const [loading, setLoading] = useState(true);
15
  const [pages, setPages] = useState(1);
16
  const [currentPage, setCurrentPage] = useState(1);
17
 
18
  // React hook form
19
  const { register, getValues } = useForm();
20
 
21
  let axiosThrottle = null;
22
 
23
  useEffect(() => {
24
    fetchFollowers();
25
    return () => {
26
      clearTimeout(axiosThrottle);
27
    };
28
  }, [currentPage]);
29
 
30
  const fetchFollowers = async () => {
31
    setLoading(true);
32
    let params = {
33
      params: {
34
        page: currentPage,
35
      },
36
    };
37
    if (getValues("search")) {
38
      params = { params: { ...params.params, search: getValues("search") } };
39
    }
40
    await axios
41
      .get(table_link, params)
7550 stevensc 42
      .then(({ data }) => {
43
        if (data.success) {
44
          setFollowers(data.data.items);
7545 stevensc 45
        }
46
      });
47
    setLoading(false);
48
  };
49
 
50
  const handleSearch = () => {
51
    //  (getValues());
52
    clearTimeout(axiosThrottle);
53
    // setLoading(true);
54
    axiosThrottle = setTimeout(() => {
55
      fetchFollowers();
56
    }, 500);
57
  };
58
 
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
7586 stevensc 89
          className="row mb-2"
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}
7545 stevensc 103
            />
7573 stevensc 104
          ))}
105
          <PaginationComponent
106
            pages={pages}
107
            currentPage={currentPage}
108
            onChangePage={handleChangePage}
109
          />
7545 stevensc 110
        </div>
111
      </div>
7573 stevensc 112
    </ContentTitle>
7545 stevensc 113
  );
114
};
115
 
116
export default Followers;