PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.2.2
Presto Player v2.2.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 / settings / pages / parts / EmailExport.js
presto-player / src / admin / settings / pages / parts Last commit date
BunnyClassic 3 years ago BunnyStream 3 years ago Webhooks 3 years ago integration 3 years ago EmailExport.js 5 years ago
EmailExport.js
108 lines
1 const { __ } = wp.i18n;
2 const {
3 Button,
4 Panel,
5 PanelBody,
6 Flex,
7 FlexBlock,
8 Notice,
9 Spinner,
10 } = wp.components;
11 const { useState, useEffect } = wp.element;
12
13 export default () => {
14 const [step, setStep] = useState(0);
15 const [progress, setProgress] = useState(0);
16 const [error, setError] = useState("");
17 const [url, setURL] = useState(0);
18
19 const exportEmails = async () => {
20 setError("");
21 try {
22 const {
23 percentage,
24 step: currentStep,
25 url: fetchedURL,
26 } = await wp.apiFetch({
27 path: "/presto-player/v1/email/export",
28 method: "post",
29 data: {
30 step,
31 },
32 });
33
34 setStep(currentStep);
35 setProgress(percentage);
36 setURL(fetchedURL);
37 } catch (e) {
38 setProgress(0);
39 setError(e?.message || __("Something went wrong", "presto-player"));
40 }
41 };
42
43 useEffect(() => {
44 if (step && step != "done") {
45 exportEmails();
46 }
47 }, [step]);
48
49 useEffect(() => {
50 if (url) {
51 window.open(url);
52 }
53 }, [url]);
54
55 return (
56 <Panel>
57 <PanelBody
58 title={
59 <Flex>
60 <FlexBlock>{__("Other", "presto-player")}</FlexBlock>
61 </Flex>
62 }
63 initialOpen={false}
64 >
65 <h2>{__("Manual Export", "presto-player")}</h2>
66 <p>
67 {__(
68 "Using a service not listed here? You can export contacts and manually upload them to a service.",
69 "presto-player"
70 )}
71 </p>
72 {error && (
73 <Notice
74 className="presto-notice"
75 status="error"
76 onRemove={() => setError("")}
77 >
78 {error}
79 </Notice>
80 )}
81 <Flex align="center" justify="flex-start">
82 <Button
83 isPrimary
84 onClick={(e) => {
85 setStep(1);
86 setProgress(1);
87 e.preventDefault();
88 }}
89 >
90 {__("Download CSV File", "presto-player")}
91 </Button>
92 {!!progress && (
93 <div
94 style={{
95 display: "flex",
96 alignItems: "center",
97 }}
98 >
99 <Spinner style={{ marginTop: 0 }} />
100 <span>Exporting... {progress}% Complete</span>
101 </div>
102 )}
103 </Flex>
104 </PanelBody>
105 </Panel>
106 );
107 };
108