Proyectos de Subversion LeadersLinked - Backend

Rev

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