PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / Campaigns / Blocks / shared / hooks / useFormOptions.ts
give / src / Campaigns / Blocks / shared / hooks Last commit date
useCampaign.ts 9 months ago useCampaigns.ts 9 months ago useFormOptions.ts 1 year ago usePostState.ts 1 year ago
useFormOptions.ts
70 lines
1 import { __ } from '@wordpress/i18n';
2 import { useSelect } from '@wordpress/data';
3 import type { Post } from '@wordpress/core-data/src/entity-types';
4 import type { Form } from '../../CampaignForm/resources/types';
5 import useSWR from 'swr';
6 import { addQueryArgs } from '@wordpress/url';
7 import apiFetch from '@wordpress/api-fetch';
8
9 export interface FormOption extends Form {
10 label: string;
11 value: number;
12 isLegacyTemplate: boolean;
13 }
14
15 /**
16 * @since 4.3.0
17 */
18 export default function useFormOptions(campaignId?: number): {
19 formOptions: FormOption[];
20 isResolving: boolean;
21 } {
22 const { forms, isResolving } = useSelect((select) => {
23 const query = { per_page: 100 };
24 return {
25 // @ts-ignore
26 forms: select('core').getEntityRecords<Post[]>('postType', 'give_forms', query),
27 // @ts-ignore
28 isResolving: select('core/data').getIsResolving('core', 'getEntityRecords', [
29 'postType',
30 'give_forms',
31 query,
32 ]),
33 };
34 }, []);
35
36 const { data, isLoading } = useSWR<{ items: { id: number }[] }>(
37 campaignId
38 ? addQueryArgs('/give-api/v2/admin/forms', {
39 campaignId,
40 status: 'publish',
41 }) as string
42 : null,
43 (path) => apiFetch({ path })
44 );
45
46 const campaignFormIds = data?.items?.map((form) => form.id) ?? [];
47
48 const filteredForms =
49 campaignId && campaignFormIds.length > 0
50 ? forms?.filter((form) => campaignFormIds.includes(form?.id))
51 : forms;
52
53 const formOptions: FormOption[] =
54 filteredForms?.map(({ title, id, formTemplate, isLegacyForm, link, name }) => ({
55 label: __(title?.rendered || name || 'Untitled Form', 'give'),
56 value: id,
57 isLegacyForm,
58 isLegacyTemplate: isLegacyForm && formTemplate === 'legacy',
59 link,
60 })) ?? [];
61
62 return {
63 formOptions:
64 isResolving || isLoading
65 ? [{ label: __('Loading...', 'give'), value: 0 } as FormOption]
66 : formOptions,
67 isResolving: isResolving || isLoading,
68 };
69 }
70