PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.10.0
GiveWP – Donation Plugin and Fundraising Platform v4.10.0
4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.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
BlankSlate 2 years ago BulkActions 11 months ago CustomFilter 11 months ago Filters 11 months ago Input 11 months ago InterweaveSSR 11 months ago ListTable 11 months ago ListTableHeaders 11 months ago ListTablePage 11 months ago ListTableRows 11 months ago ListTableStats 11 months ago Pagination 11 months ago ProductRecommendations 11 months ago RowAction 11 months ago Select 11 months ago TableCell 11 months ago ToggleSwitch 11 months ago hooks 1 year ago README.MD 3 years ago api.ts 11 months ago
api.ts
87 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
11 constructor({apiNonce, apiRoot, preload = null, swrConfig = {}}) {
12 this.controller = null;
13 this.apiRoot = apiRoot;
14 this.headers = {
15 'Content-Type': 'application/json',
16 'X-WP-Nonce': apiNonce,
17 };
18 this.swrOptions = {
19 use: [lagData],
20 ...swrConfig,
21 onErrorRetry: (error, key, config, revalidate, {retryCount}) => {
22 //don't retry if we cancelled the initial request
23 if (error.name == 'AbortError') return;
24 if (retryCount >= 5) return;
25 const retryAfter = (retryCount + 1) * 500;
26 setTimeout(() => revalidate({retryCount}), retryAfter);
27 },
28 };
29 if (preload) {
30 this.swrOptions.fallbackData = preload;
31 this.swrOptions.use.push(useFallbackAsInitial);
32 }
33 }
34
35 fetchWithArgs = (endpoint, args, method = 'GET', signal = null) => {
36 const url = new URL(this.apiRoot + endpoint);
37 for (const [param, value] of Object.entries(args)) {
38 value !== '' && url.searchParams.set(param, value as string);
39 }
40 return fetch(url.href, {
41 method: method,
42 signal: signal,
43 headers: this.headers,
44 }).then((res) => {
45 if (!res.ok) {
46 return res.text().then((errorMessage) => {
47 throw new Error(errorMessage);
48 });
49 }
50 return res.json();
51 });
52 };
53
54 fetcher = (params) => {
55 if (this.controller instanceof AbortController) this.controller.abort();
56 this.controller = new AbortController();
57 return this.fetchWithArgs('', params, 'GET', this.controller.signal);
58 };
59
60 // SWR Fetcher
61 useListTable = ({page, perPage, sortColumn, sortDirection, locale, testMode, ...filters}) => {
62 const {data, error, mutate, isValidating} = useSWR(
63 {
64 page,
65 perPage,
66 sortColumn,
67 sortDirection,
68 locale,
69 testMode,
70 ...filters,
71 },
72 this.fetcher,
73 this.swrOptions
74 );
75 return {data, error, mutate, isValidating};
76 };
77
78 useStats = (testMode) => {
79 const {data, error, mutate, isValidating} = useSWR(
80 {testMode},
81 (params) => this.fetchWithArgs('/stats', params, 'GET'),
82 this.swrOptions
83 );
84 return {data, error, mutate, isValidating};
85 };
86 }
87