PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.2.2
Presto Player v2.2.2
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / analytics / hocs / withDataList.js
presto-player / src / admin / analytics / hocs Last commit date
withDataList.js 5 years ago withStat.js 5 years ago
withDataList.js
83 lines
1 /**
2 * WordPress dependencies
3 */
4 const { __ } = wp.i18n;
5 const { apiFetch } = wp;
6 const { useState } = wp.element;
7 const { createHigherOrderComponent } = wp.compose;
8
9 /**
10 * Higher order component factory
11 *
12 * @return {Function} The higher order component.
13 */
14 export default () =>
15 createHigherOrderComponent(
16 (WrappedComponent) => (props) => {
17 const [loading, setLoading] = useState(false);
18 const [page, setPage] = useState(1);
19 const [total, setTotal] = useState(0);
20 const [totalPages, setTotalPages] = useState(0);
21 const [data, setData] = useState([]);
22 const [error, setError] = useState("");
23
24 // fetch data
25 // we could also abstract this function to make it reusable
26 // or do a higher order component
27 const fetchData = async ({ endpoint, params = {} }) => {
28 setLoading(true);
29
30 let responseData;
31 try {
32 responseData = await apiFetch({
33 path: wp.url.addQueryArgs(endpoint, {
34 page,
35 per_page: 5,
36 ...params,
37 }),
38 parse: false,
39 }).then((res) => {
40 const total = res.headers
41 ? parseInt(res.headers.get("X-WP-Total"))
42 : 0;
43 const totalPages = res.headers
44 ? parseInt(res.headers.get("X-WP-TotalPages"))
45 : 0;
46 setTotal(total);
47 setTotalPages(totalPages);
48 return res.json();
49 });
50
51 setData(responseData);
52 } catch (e) {
53 console.error(e);
54 if (e?.message) {
55 setError(e.message);
56 }
57 } finally {
58 setLoading(false);
59 }
60 };
61
62 return (
63 <WrappedComponent
64 loading={loading}
65 setLoading={setLoading}
66 fetchData={fetchData}
67 page={page}
68 setPage={setPage}
69 total={total}
70 setTotal={setTotal}
71 totalPages={totalPages}
72 setTotalPages={setTotalPages}
73 data={data}
74 setData={setData}
75 error={error}
76 setError={setError}
77 {...props}
78 />
79 );
80 },
81 "withDataList"
82 );
83