PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.3
Presto Player v4.3.3
4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / blocks / shared / presets / parts / FluentCRMConfig.js
presto-player / src / admin / blocks / shared / presets / parts Last commit date
ActiveCampaignConfig.js 5 years ago ChooseProvider.js 3 months ago FluentCRMConfig.js 4 weeks ago MailchimpConfig.js 5 years ago MailerLiteConfig.js 5 years ago WebhooksConfig.js 3 years ago YoutubeChannelId.js 1 month ago YoutubeChannelId.scss 1 month ago
FluentCRMConfig.js
137 lines
1 /**
2 * WordPress dependencies
3 */
4 const { __ } = wp.i18n;
5 const { SelectControl, Notice } = wp.components;
6 const { useEffect, useState } = wp.element;
7 import LoadSelect from "../../components/LoadSelect";
8
9 export default ({ options, updateEmailState }) => {
10 // Start in the fetching state since both requests fire on mount, so the
11 // empty-state help doesn't flash before the lists/tags have loaded.
12 const [fetchingLists, setFetchingLists] = useState(true);
13 const [fetchingTags, setFetchingTags] = useState(true);
14
15 const [lists, setLists] = useState([
16 { value: null, label: __("Choose a list", "presto-player") },
17 ]);
18 const [tags, setTags] = useState([
19 { value: null, label: __("Choose a tag", "presto-player") },
20 ]);
21 const [error, setError] = useState("");
22
23 const fetchLists = async () => {
24 setFetchingLists(true);
25 try {
26 const fetched = await wp.apiFetch({
27 path: "presto-player/v1/fluentcrm/lists",
28 });
29
30 let listOptions = lists;
31 (fetched || []).forEach((list) => {
32 listOptions = [
33 ...listOptions,
34 ...[
35 {
36 value: list.id,
37 label: list.title || list.slug,
38 },
39 ],
40 ];
41 });
42 setLists(listOptions);
43 } catch (e) {
44 if (e?.message) {
45 setError(e.message);
46 }
47 } finally {
48 setFetchingLists(false);
49 }
50 };
51
52 const fetchTags = async () => {
53 setFetchingTags(true);
54 try {
55 const fetched = await wp.apiFetch({
56 path: "presto-player/v1/fluentcrm/tags",
57 });
58
59 let tagOptions = tags;
60 (fetched || []).forEach((tag) => {
61 tagOptions = [
62 ...tagOptions,
63 ...[
64 {
65 value: tag.id,
66 label: tag.title || tag.slug,
67 },
68 ],
69 ];
70 });
71 setTags(tagOptions);
72 } catch (e) {
73 if (e?.message) {
74 setError(e.message);
75 }
76 } finally {
77 setFetchingTags(false);
78 }
79 };
80
81 useEffect(() => {
82 fetchLists();
83 fetchTags();
84 }, []);
85
86 if (error) {
87 return (
88 <Notice className="presto-notice" status="error" isDismissible={false}>
89 {error}
90 </Notice>
91 );
92 }
93
94 return (
95 <div>
96 {fetchingLists ? (
97 <LoadSelect />
98 ) : (
99 <SelectControl
100 label={__("Choose a list", "presto-player")}
101 value={options?.provider_list}
102 options={lists}
103 onChange={(provider_list) => updateEmailState({ provider_list })}
104 // length 1 = only the placeholder option, i.e. FluentCRM has no lists yet
105 help={
106 lists.length <= 1
107 ? __(
108 "No lists found in FluentCRM. Create a list in FluentCRM to assign contacts to it.",
109 "presto-player"
110 )
111 : undefined
112 }
113 />
114 )}
115
116 {fetchingTags ? (
117 <LoadSelect />
118 ) : (
119 <SelectControl
120 label={__("Choose a tag", "presto-player")}
121 value={options?.provider_tag}
122 options={tags}
123 onChange={(provider_tag) => updateEmailState({ provider_tag })}
124 help={
125 tags.length <= 1
126 ? __(
127 "No tags found in FluentCRM. Create a tag in FluentCRM to apply it to contacts.",
128 "presto-player"
129 )
130 : undefined
131 }
132 />
133 )}
134 </div>
135 );
136 };
137