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