PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / Subscriptions / resources / utils.ts
give / src / Subscriptions / resources Last commit date
admin 7 months ago common 9 months ago components 8 months ago constants 8 months ago hooks 9 months ago admin-subscriptions.tsx 1 year ago types.ts 9 months ago utils.ts 8 months ago
utils.ts
75 lines
1 import { useEntityRecord } from '@wordpress/core-data';
2 import { useDispatch } from '@wordpress/data';
3 import { store as coreStore } from '@wordpress/core-data';
4 import apiFetch from '@wordpress/api-fetch';
5 import { Subscription } from '@givewp/subscriptions/admin/components/types';
6 import type { GiveSubscriptionOptions } from '@givewp/subscriptions/types';
7
8 declare const window: {
9 GiveSubscriptionOptions: GiveSubscriptionOptions;
10 } & Window;
11
12 /**
13 * @since 4.11.0 added refreshSubscriptionInBackground to the save method
14 * @since 4.8.0
15 */
16 export function useSubscriptionEntityRecord(subscriptionId?: number) {
17 const urlParams = new URLSearchParams(window.location.search);
18 const refreshSubscriptionInBackground = useRefreshSubscriptionInBackground();
19
20 const {
21 record,
22 hasResolved,
23 isResolving,
24 save,
25 edit,
26 }: {
27 record: Subscription;
28 hasResolved: boolean;
29 isResolving: boolean;
30 save: () => any;
31 edit: (data: Subscription | Partial<Subscription>) => void;
32 } = useEntityRecord('givewp', 'subscription', subscriptionId ?? urlParams.get('id'));
33
34 const saveAndRefresh = async () => {
35 const response = await save();
36 await refreshSubscriptionInBackground(response?.id);
37
38 return response;
39 }
40
41 return {record, hasResolved, isResolving, save: saveAndRefresh, edit};
42 }
43
44 /**
45 * @since 4.11.0 added _embed=true to the request
46 * @since 4.8.0
47 */
48 export function useRefreshSubscriptionInBackground() {
49 const { receiveEntityRecords, invalidateResolution } = useDispatch(coreStore);
50
51 const refreshSubscriptionInBackground = async (subscriptionId: number) => {
52 if (!subscriptionId) return;
53
54 try {
55 const latestSubscriptionData = await apiFetch({
56 path: `/givewp/v3/subscriptions/${subscriptionId}?_embed=true`,
57 });
58
59 receiveEntityRecords('givewp', 'subscription', latestSubscriptionData, undefined, false);
60 } catch (error) {
61 console.error('Error refreshing subscription in background:', error);
62 invalidateResolution('getEntityRecord', ['givewp', 'subscription', subscriptionId]);
63 }
64 };
65
66 return refreshSubscriptionInBackground;
67 }
68
69 /**
70 * @since 4.8.0
71 */
72 export function getSubscriptionOptionsWindowData(): GiveSubscriptionOptions {
73 return window.GiveSubscriptionOptions;
74 }
75