PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.1
Presto Player v4.3.1
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 / ChooseProvider.js
presto-player / src / admin / blocks / shared / presets / parts Last commit date
ActiveCampaignConfig.js 5 years ago ChooseProvider.js 1 month ago FluentCRMConfig.js 5 years ago MailchimpConfig.js 5 years ago MailerLiteConfig.js 5 years ago WebhooksConfig.js 3 years ago YoutubeChannelId.js 2 weeks ago YoutubeChannelId.scss 2 weeks ago
ChooseProvider.js
165 lines
1 /**
2 * WordPress dependencies
3 */
4 const { __ } = wp.i18n;
5 const { SelectControl, Button, Flex, Icon } = wp.components;
6 const { useEffect, useState } = wp.element;
7 import LoadSelect from "../../components/LoadSelect";
8
9 import MailchimpConfig from "./MailchimpConfig";
10 import MailerLiteConfig from "./MailerLiteConfig";
11 import ActiveCampaignConfig from "./ActiveCampaignConfig";
12 import FluentCRMConfig from "./FluentCRMConfig";
13 import WebhooksConfig from "./WebhooksConfig";
14
15 export default ({ options, updateEmailState }) => {
16 const [fetching, setFetching] = useState(false);
17 const [settings, setSettings] = useState([
18 { value: "none", label: __("None", "presto-player") },
19 ]);
20 const [error, setError] = useState("");
21
22 const optionsMap = {
23 presto_player_activecampaign: {
24 label: "ActiveCampaign",
25 value: "activecampaign",
26 },
27 presto_player_mailchimp: {
28 label: "MailChimp",
29 value: "mailchimp",
30 },
31 presto_player_mailerlite: {
32 label: "MailerLite",
33 value: "mailerlite",
34 },
35 presto_player_fluentcrm: {
36 label: "FluentCRM",
37 value: "fluentcrm",
38 },
39 };
40
41 const fetchSettings = async () => {
42 setFetching(true);
43 setError("");
44 try {
45 const fetched = await wp.apiFetch({
46 path: "wp/v2/settings",
47 });
48 let settingsToSet = settings;
49 Object.keys(fetched).forEach((key) => {
50 if (optionsMap?.[key] && fetched[key]?.connected) {
51 settingsToSet = [...settingsToSet, ...[optionsMap[key]]];
52 }
53 });
54 setSettings([
55 ...settingsToSet,
56 ...[{ label: __("Webhooks", "presto-player"), value: "webhooks" }],
57 ]);
58 } catch (e) {
59 if (e?.message) {
60 setError(e.message);
61 }
62 } finally {
63 setFetching(false);
64 }
65 };
66
67 const addProvider = () => {
68 return (
69 <Flex>
70 <Button
71 target="_blank"
72 href="/wp-admin/admin.php?page=presto-dashboard&tab=Settings&section=email-capture"
73 isSecondary
74 isSmall
75 >
76 {__("Connect a provider", "presto-player")}
77 </Button>
78 <Button
79 isSmall
80 onClick={(e) => {
81 e.preventDefault();
82 fetchSettings();
83 }}
84 >
85 <Icon icon="update" />
86 </Button>
87 </Flex>
88 );
89 };
90
91 useEffect(() => {
92 fetchSettings();
93 }, []);
94
95 const emailProviderOptions = () => {
96 const found = settings.find(
97 (setting) => setting.value === options?.provider
98 );
99 if (!Object.keys(found || {}).length) {
100 return;
101 }
102
103 switch (options?.provider) {
104 case "webhooks":
105 return (
106 <WebhooksConfig
107 options={options}
108 updateEmailState={updateEmailState}
109 />
110 );
111 case "mailchimp":
112 return (
113 <MailchimpConfig
114 options={options}
115 updateEmailState={updateEmailState}
116 />
117 );
118 case "mailerlite":
119 return (
120 <MailerLiteConfig
121 options={options}
122 updateEmailState={updateEmailState}
123 />
124 );
125 case "activecampaign":
126 return (
127 <ActiveCampaignConfig
128 options={options}
129 updateEmailState={updateEmailState}
130 />
131 );
132 case "fluentcrm":
133 return (
134 <FluentCRMConfig
135 options={options}
136 updateEmailState={updateEmailState}
137 />
138 );
139 }
140 };
141
142 if (fetching) {
143 return <LoadSelect />;
144 }
145
146 return (
147 <div>
148 {error}
149 {settings.length > 1 ? (
150 <div>
151 <SelectControl
152 label={__("Choose an email provider", "presto-player")}
153 value={options?.provider}
154 options={settings}
155 onChange={(provider) => updateEmailState({ provider })}
156 />
157 {emailProviderOptions()}
158 </div>
159 ) : (
160 addProvider()
161 )}
162 </div>
163 );
164 };
165