PluginProbe
HubSpot All-In-One Marketing – Forms, Popups, Live Chat / 11.3.75
HubSpot All-In-One Marketing – Forms, Popups, Live Chat v11.3.75
11.3.75 11.3.73 11.3.71 11.3.70 11.3.69 11.3.64 11.3.65 11.3.62 11.3.61 11.3.56 11.3.58 11.0.31 11.0.52 11.0.54 11.0.56 11.0.58 11.0.7 11.1.10 11.1.11 11.1.13 11.1.14 11.1.15 11.1.2 11.1.20 11.1.21 All 73 releases
leadin / scripts / shared / Form / hooks / useGetTemplateAvailability.ts

useGetTemplateAvailability.ts in HubSpot All-In-One Marketing – Forms, Popups, Live Chat 11.3.75, at scripts/shared/Form/hooks/useGetTemplateAvailability.ts

73 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useEffect, useState } from 'react';
2 import { __ } from '@wordpress/i18n';
3 import { usePostAsyncBackgroundMessage } from '../../../iframe/useBackgroundApp';
4 import { ProxyMessages } from '../../../iframe/integratedMessages';
5 import {
6 TemplateAvailability,
7 HubSpotFormTemplateAvailabilityKeys,
8 TemplateLabels,
9 TemplateValues,
10 TemplateAvailabilityResponse,
11 ExcludedTemplateAvailabilityKeys,
12 } from '../../types';
13
14 export default function useGetTemplateAvailability() {
15 const proxy = usePostAsyncBackgroundMessage();
16 const [
17 templateAvailability,
18 setTemplateAvailability,
19 ] = useState<TemplateAvailability | null>(null);
20
21 const [availabilityPromise] = useState(
22 () =>
23 new Promise<TemplateAvailabilityResponse>(resolve => {
24 proxy({
25 key: ProxyMessages.GetTemplateAvailability,
26 payload: {},
27 }).then(data => {
28 setTemplateAvailability(data.templateAvailability);
29 resolve(data);
30 });
31 })
32 );
33
34 return { templateAvailability, availabilityPromise };
35 }
36
37 export const getTemplateOptions = (
38 templateAvailability: TemplateAvailability | null
39 ) => {
40 if (!templateAvailability) {
41 return {};
42 }
43
44 return {
45 label: __('Templates', 'leadin'),
46 options: Object.keys(templateAvailability)
47 .filter(templateId => {
48 const hubspotFormTemplateAvailability =
49 templateAvailability[templateId as keyof TemplateAvailability];
50 return (
51 (hubspotFormTemplateAvailability.canCreateWithMissingScopes ||
52 !hubspotFormTemplateAvailability.missingScopes.length) &&
53 !Object.values(ExcludedTemplateAvailabilityKeys).includes(
54 templateId as ExcludedTemplateAvailabilityKeys
55 )
56 );
57 })
58 .map(templateId => {
59 return {
60 label: __(
61 TemplateLabels[templateId as keyof typeof TemplateLabels],
62 'leadin'
63 ),
64 value: TemplateValues[templateId as keyof typeof TemplateValues],
65 };
66 }),
67 };
68 };
69
70 export function isDefaultForm(value: HubSpotFormTemplateAvailabilityKeys) {
71 return Object.values(TemplateValues).includes(value);
72 }
73