PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 1.9.0
GiveWP – Donation Plugin and Fundraising Platform v1.9.0
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 / DonationForms / resources / api.ts
give / src / DonationForms / resources Last commit date
components 4 years ago hooks 4 years ago admin-donation-forms.module.scss 4 years ago admin-donation-forms.tsx 4 years ago api.ts 4 years ago
api.ts
54 lines
1 import useSWR from 'swr';
2 import lagData from './hooks/lagData';
3
4 declare global {
5 interface Window {
6 GiveDonationForms: {apiNonce: string; apiRoot: string};
7 }
8 }
9
10 let controller = null;
11 const headers = {
12 'Content-Type': 'application/json',
13 'X-WP-Nonce': window.GiveDonationForms.apiNonce,
14 };
15
16 export const fetchWithArgs = (endpoint, args, method = 'GET', signal = null) => {
17 const url = new URL(window.GiveDonationForms.apiRoot + endpoint);
18 for (const [param, value] of Object.entries(args)) {
19 url.searchParams.set(param, value as string);
20 }
21 return fetch(url.href, {
22 method: method,
23 signal: signal,
24 headers: headers,
25 }).then((res) => {
26 if(!res.ok){
27 throw new Error();
28 }
29 return res.json();
30 });
31 }
32
33 const Fetcher = (params) => {
34 if(controller instanceof AbortController) controller.abort();
35 controller = new AbortController();
36 return fetchWithArgs('', params, 'GET', controller.signal);
37 }
38
39 // SWR Fetcher
40 export function useDonationForms({page, perPage, status, search}) {
41 const {data, error, isValidating} = useSWR({page, perPage, status, search}, Fetcher, {
42 use: [lagData],
43 onErrorRetry: (error, key, config, revalidate, { retryCount }) => {
44 //don't retry if we cancelled the initial request
45 if(error.name == 'AbortError') return;
46 if (retryCount >= 5) return
47 const retryAfter = (retryCount + 1) * 500;
48 setTimeout(() => revalidate({ retryCount }), retryAfter);
49 }
50 });
51
52 return {data, error, isValidating};
53 }
54