PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.3
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Views / Components / ListTable / api.ts
give / src / Views / Components / ListTable Last commit date
hooks 4 years ago images 4 years ago BulkActionCheckbox.tsx 4 years ago BulkActionSelect.module.scss 4 years ago BulkActionSelect.tsx 4 years ago Filters.tsx 4 years ago FormSelect.module.scss 4 years ago FormSelect.tsx 4 years ago Input.module.scss 4 years ago Input.tsx 4 years ago ListTable.module.scss 4 years ago ListTable.tsx 4 years ago ListTablePage.module.scss 3 years ago ListTableRows.module.scss 3 years ago ListTableRows.tsx 4 years ago Pagination.module.scss 4 years ago Pagination.tsx 4 years ago README.MD 4 years ago RowAction.module.scss 4 years ago RowAction.tsx 4 years ago Select.module.scss 4 years ago Select.tsx 4 years ago TableCell.module.scss 4 years ago TableCell.tsx 4 years ago TestLabel.module.scss 4 years ago TestLabel.tsx 4 years ago TypeBadge.module.scss 4 years ago TypeBadge.tsx 4 years ago api.ts 4 years ago index.tsx 4 years ago
api.ts
62 lines
1 import useSWR from 'swr';
2 import lagData from './hooks/lagData';
3 import useFallbackAsInitial from "@givewp/components/ListTable/hooks/useFallbackAsInitial";
4
5 export default class ListTableApi {
6 private readonly apiRoot: string;
7 private controller: AbortController|null;
8 private readonly headers: { "X-WP-Nonce": string; "Content-Type": string };
9 private readonly swrOptions;
10 constructor({apiNonce, apiRoot, preload = null}) {
11 this.controller = null;
12 this.apiRoot = apiRoot;
13 this.headers = {
14 'Content-Type': 'application/json',
15 'X-WP-Nonce': apiNonce,
16 };
17 this.swrOptions = {
18 use: [lagData],
19 onErrorRetry: (error, key, config, revalidate, { retryCount }) => {
20 //don't retry if we cancelled the initial request
21 if(error.name == 'AbortError') return;
22 if (retryCount >= 5) return;
23 const retryAfter = (retryCount + 1) * 500;
24 setTimeout(() => revalidate({ retryCount }), retryAfter);
25 }
26 };
27 if(preload){
28 this.swrOptions.fallbackData = preload;
29 this.swrOptions.use.push(useFallbackAsInitial);
30 }
31 }
32
33 fetchWithArgs = (endpoint, args, method = 'GET', signal = null) => {
34 const url = new URL(this.apiRoot + endpoint);
35 for (const [param, value] of Object.entries(args)) {
36 value !== '' && url.searchParams.set(param, value as string);
37 }
38 return fetch(url.href, {
39 method: method,
40 signal: signal,
41 headers: this.headers,
42 }).then((res) => {
43 if(!res.ok){
44 throw new Error();
45 }
46 return res.json();
47 });
48 }
49
50 fetcher = (params) => {
51 if(this.controller instanceof AbortController) this.controller.abort();
52 this.controller = new AbortController();
53 return this.fetchWithArgs('', params, 'GET', this.controller.signal);
54 }
55
56 // SWR Fetcher
57 useListTable = ({page, perPage, ...filters}) => {
58 const {data, error, mutate, isValidating} = useSWR({page, perPage, ...filters}, this.fetcher, this.swrOptions);
59 return {data, error, mutate, isValidating};
60 }
61 }
62