PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
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 / hooks / useSubscriptionCancel.ts
give / src / Subscriptions / resources / hooks Last commit date
index.ts 9 months ago useDonationsBySubscription.ts 9 months ago useSubscriptionAmounts.ts 9 months ago useSubscriptionCancel.ts 9 months ago useSubscriptionSync.tsx 9 months ago
useSubscriptionCancel.ts
71 lines
1 import apiFetch from '@wordpress/api-fetch';
2 import { useDispatch } from '@wordpress/data';
3 import { __ } from '@wordpress/i18n';
4 import { useState } from 'react';
5 import { Subscription } from '../admin/components/types';
6
7 /**
8 * @since 4.8.0
9 */
10 const isResponseSubscription = (response: unknown): response is Subscription => {
11 return typeof response === 'object' && response !== null && 'id' in response;
12 };
13
14 /**
15 * @since 4.8.0
16 */
17 export default function useSubscriptionCancel(subscription: Subscription) {
18 const [isCancelling, setIsCancelling] = useState(false);
19 const [isCancelled, setIsCancelled] = useState(false);
20 const dispatch = useDispatch('givewp/admin-details-page-notifications');
21 const {invalidateResolution, invalidateResolutionForStore} = useDispatch('core');
22
23 const invalidateSubscriptionCache = () => {
24 invalidateResolution('getEntityRecords', ['givewp', 'subscription']);
25 invalidateResolutionForStore();
26 };
27
28 const cancel = async (trash: boolean = false) => {
29 setIsCancelling(true);
30 const response = await apiFetch({path: `/givewp/v3/subscriptions/${subscription.id}/cancel`, method: 'POST', data: {trash}});
31
32 if (isResponseSubscription(response) && response.status === 'cancelled') {
33 setIsCancelling(false);
34 setIsCancelled(true);
35
36 invalidateSubscriptionCache();
37
38 if (trash) {
39 dispatch.addSnackbarNotice({
40 id: 'cancel-subscription',
41 content: __('Subscription cancelled and moved to trash', 'give'),
42 });
43 } else {
44 dispatch.addSnackbarNotice({
45 id: 'cancel-subscription',
46 content: __('Subscription cancelled successfully', 'give'),
47 });
48 }
49
50 return response;
51 } else {
52 console.error('Failed to cancel subscription', response);
53 setIsCancelling(false);
54 setIsCancelled(false);
55
56 dispatch.addSnackbarNotice({
57 id: 'cancel-subscription',
58 content: __('Failed to cancel subscription', 'give'),
59 });
60
61 throw new Error('Failed to cancel subscription');
62 }
63 };
64
65 return {
66 isCancelling,
67 cancel,
68 isCancelled,
69 };
70 }
71