PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
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 / integrations / divi / modules / PrestoPlayer / RenderPlayer.jsx
presto-player / src / admin / integrations / divi / modules / PrestoPlayer Last commit date
PrestoPlayer.jsx 3 years ago RenderPlayer.jsx 2 weeks ago style.css 4 years ago
RenderPlayer.jsx
113 lines
1 import { PrestoPlayer } from "@presto-player/components-react";
2 import React, { useEffect, useState } from "react";
3 import { getProvider } from "../util";
4
5 export default ({ id, src }) => {
6 const [data, setData] = useState({});
7 const [loading, setLoading] = useState(false);
8 const [provider, setProvider] = useState("");
9 const [renderKey, setRenderKey] = useState(1);
10
11 useEffect(() => {
12 setRenderKey(renderKey + 1);
13 }, [id, src, data]);
14
15 useEffect(() => {
16 getHtml(id);
17 }, [id]);
18
19 useEffect(() => {
20 if (src) {
21 setProvider(getProvider(src));
22 }
23 }, [src]);
24
25 const getHtml = async (id) => {
26 if (!id) {
27 return;
28 }
29 setLoading(true);
30 try {
31 const res = await fetch(`/wp-admin/admin-ajax.php`, {
32 method: "POST",
33 credentials: "same-origin",
34 headers: {
35 "Content-Type": "application/x-www-form-urlencoded",
36 "Cache-Control": "no-cache",
37 },
38 body: new URLSearchParams({
39 action: "presto_get_media_attributes",
40 _wpnonce: window.et_fb_options.et_admin_load_nonce,
41 id,
42 }),
43 }).then((response) => response.json());
44 setData(res.data);
45 } finally {
46 setLoading(false);
47 }
48 };
49
50 if (loading) {
51 return (
52 <div className="et-fb-preloader et-fb-preloader__loading">
53 <div className="et-fb-loader" />
54 </div>
55 );
56 }
57
58 if (data?.id) {
59 src = src ? src : data.src;
60
61 if (
62 data?.provider === "bunny" &&
63 (provider === "self-hosted" || provider === "bunny")
64 ) {
65 return (
66 <presto-video-curtain-ui>
67 <span>
68 Bunny.net videos cannot be previewed in the DIVI editor due to DIVI
69 iframe having no referrer.
70 </span>
71 <presto-player-button
72 full
73 type="primary"
74 target="_blank"
75 href="https://prestoplayer.com/docs/bunny-net-videos-not-showing-in-divi-editor"
76 >
77 Learn More
78 </presto-player-button>
79 </presto-video-curtain-ui>
80 );
81 }
82
83 return (
84 <div
85 className="presto-divi-player"
86 >
87 {data?.styles && <style>{`.presto-divi-player{${data.styles}}`}</style>}
88 <PrestoPlayer
89 key={renderKey}
90 video_id={data.id}
91 preset={data.preset}
92 src={src}
93 chapters={data.chapters}
94 tracks={data.tracks}
95 branding={data.branding}
96 blockAttributes={data.blockAttributes}
97 poster={data?.blockAttributes?.poster}
98 mediaTitle={data?.blockAttributes?.title}
99 config={data.config}
100 skin={data.skin}
101 analytics={data.analytics}
102 automations={data.automations}
103 provider={provider || data?.provider}
104 provider_video_id={data.provider_video_id}
105 youtube={data.youtube}
106 ></PrestoPlayer>
107 </div>
108 );
109 } else {
110 return "Choose Media Item";
111 }
112 };
113