PluginProbe ʕ •ᴥ•ʔ
Presto Player / 1.8.2
Presto Player v1.8.2
4.5.0 4.4.1 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 / settings / pages / parts / EmailExport.js
presto-player / src / admin / settings / pages / parts Last commit date
integration 5 years ago BunnyStream.js 5 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