@mottosports/motto-video-player 1.0.1-rc.60 → 1.0.1-rc.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +55 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +55 -27
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1201,7 +1201,6 @@ var isPlayReadySupported = () => {
|
|
|
1201
1201
|
return isXbox || (isEdge || isIE) && isWindows;
|
|
1202
1202
|
};
|
|
1203
1203
|
var supportsWidevinePersistentLicenses = () => {
|
|
1204
|
-
return false;
|
|
1205
1204
|
if (typeof navigator === "undefined") {
|
|
1206
1205
|
return false;
|
|
1207
1206
|
}
|
|
@@ -1226,7 +1225,7 @@ var supportsWidevinePersistentLicenses = () => {
|
|
|
1226
1225
|
var import_mux_data_shakaplayer = __toESM(require("@mux/mux-data-shakaplayer"));
|
|
1227
1226
|
|
|
1228
1227
|
// package.json
|
|
1229
|
-
var version = "1.0.1-rc.
|
|
1228
|
+
var version = "1.0.1-rc.62";
|
|
1230
1229
|
|
|
1231
1230
|
// src/utils/licenseCache.ts
|
|
1232
1231
|
var PERSISTENT_LICENSE_PREFIX = "motto_lic_";
|
|
@@ -1396,6 +1395,8 @@ var useShakaPlayer = ({
|
|
|
1396
1395
|
const waitingForKeyHandlerRef = (0, import_react.useRef)(null);
|
|
1397
1396
|
const playbackResumedHandlerRef = (0, import_react.useRef)(null);
|
|
1398
1397
|
const usingPersistentLicenseRef = (0, import_react.useRef)(false);
|
|
1398
|
+
const storedPersistentThisLoadRef = (0, import_react.useRef)(false);
|
|
1399
|
+
const drmExpirationHandlerRef = (0, import_react.useRef)(null);
|
|
1399
1400
|
const getManifestUrl = (0, import_react.useCallback)(() => {
|
|
1400
1401
|
let manifestUrl = src.url;
|
|
1401
1402
|
const isDRM = Boolean(src.drm);
|
|
@@ -1427,6 +1428,7 @@ var useShakaPlayer = ({
|
|
|
1427
1428
|
const manifestUrl = getManifestUrl();
|
|
1428
1429
|
let playlistId = src.id;
|
|
1429
1430
|
const isDRM = Boolean(src.drm);
|
|
1431
|
+
storedPersistentThisLoadRef.current = false;
|
|
1430
1432
|
let storedSessionsMetadata = [];
|
|
1431
1433
|
if (isDRM && playlistId) {
|
|
1432
1434
|
storedSessionsMetadata = retrievePersistentLicense(playlistId, src.drm.licenseCacheKey ?? "");
|
|
@@ -1539,6 +1541,36 @@ var useShakaPlayer = ({
|
|
|
1539
1541
|
});
|
|
1540
1542
|
}
|
|
1541
1543
|
}
|
|
1544
|
+
if (isDRM && playlistId) {
|
|
1545
|
+
const onDRMSessionUpdate = () => {
|
|
1546
|
+
try {
|
|
1547
|
+
if (storedPersistentThisLoadRef.current) return;
|
|
1548
|
+
const activeDrmSessions = player.getActiveSessionsMetadata?.();
|
|
1549
|
+
if (!activeDrmSessions) return;
|
|
1550
|
+
const persistentSessions = activeDrmSessions.filter(
|
|
1551
|
+
(session) => session.sessionType === "persistent-license"
|
|
1552
|
+
);
|
|
1553
|
+
if (persistentSessions.length > 0) {
|
|
1554
|
+
const sessionsToStore = persistentSessions.map((session) => ({
|
|
1555
|
+
sessionId: session.sessionId,
|
|
1556
|
+
initData: session.initData,
|
|
1557
|
+
initDataType: session.initDataType,
|
|
1558
|
+
keySystem: session.keySystem || "com.widevine.alpha"
|
|
1559
|
+
}));
|
|
1560
|
+
storePersistentLicense(playlistId, src.drm.licenseCacheKey ?? "", sessionsToStore);
|
|
1561
|
+
storedPersistentThisLoadRef.current = true;
|
|
1562
|
+
}
|
|
1563
|
+
} catch (e) {
|
|
1564
|
+
console.warn("Failed to persist licenses on expiration update:", e);
|
|
1565
|
+
}
|
|
1566
|
+
};
|
|
1567
|
+
try {
|
|
1568
|
+
player.addEventListener("drmsessionupdate", onDRMSessionUpdate);
|
|
1569
|
+
drmExpirationHandlerRef.current = onDRMSessionUpdate;
|
|
1570
|
+
} catch (e) {
|
|
1571
|
+
console.warn("Failed to attach drmsessionupdate listener:", e);
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1542
1574
|
player?.addEventListener("error", (event) => {
|
|
1543
1575
|
const error = event.detail;
|
|
1544
1576
|
if (error?.code === 7e3) {
|
|
@@ -1602,30 +1634,6 @@ var useShakaPlayer = ({
|
|
|
1602
1634
|
}
|
|
1603
1635
|
}
|
|
1604
1636
|
await player.load(manifestUrl);
|
|
1605
|
-
if (isDRM && playlistId) {
|
|
1606
|
-
try {
|
|
1607
|
-
setTimeout(() => {
|
|
1608
|
-
const activeDrmSessions = player.getActiveSessionsMetadata?.();
|
|
1609
|
-
if (activeDrmSessions) {
|
|
1610
|
-
const persistentSessions = activeDrmSessions.filter(
|
|
1611
|
-
(session) => session.sessionType === "persistent-license"
|
|
1612
|
-
);
|
|
1613
|
-
if (persistentSessions.length > 0) {
|
|
1614
|
-
const sessionsToStore = persistentSessions.map((session) => ({
|
|
1615
|
-
sessionId: session.sessionId,
|
|
1616
|
-
initData: session.initData,
|
|
1617
|
-
initDataType: session.initDataType,
|
|
1618
|
-
keySystem: session.keySystem || "com.widevine.alpha"
|
|
1619
|
-
// fallback
|
|
1620
|
-
}));
|
|
1621
|
-
storePersistentLicense(playlistId, src.drm.licenseCacheKey ?? "", sessionsToStore);
|
|
1622
|
-
}
|
|
1623
|
-
}
|
|
1624
|
-
}, 2e3);
|
|
1625
|
-
} catch (error) {
|
|
1626
|
-
console.warn("Failed to store persistent license sessions:", error);
|
|
1627
|
-
}
|
|
1628
|
-
}
|
|
1629
1637
|
onPlayerReady?.(player);
|
|
1630
1638
|
return player;
|
|
1631
1639
|
} catch (error) {
|
|
@@ -1661,11 +1669,21 @@ var useShakaPlayer = ({
|
|
|
1661
1669
|
window.clearTimeout(waitingForKeyTimerRef.current);
|
|
1662
1670
|
waitingForKeyTimerRef.current = null;
|
|
1663
1671
|
}
|
|
1672
|
+
try {
|
|
1673
|
+
if (drmExpirationHandlerRef.current && playerRef.current?.removeEventListener) {
|
|
1674
|
+
playerRef.current.removeEventListener("drmsessionupdate", drmExpirationHandlerRef.current);
|
|
1675
|
+
}
|
|
1676
|
+
} catch (e) {
|
|
1677
|
+
console.warn("Error removing DRM expiration listener:", e);
|
|
1678
|
+
} finally {
|
|
1679
|
+
drmExpirationHandlerRef.current = null;
|
|
1680
|
+
}
|
|
1664
1681
|
await playerRef.current.destroy();
|
|
1665
1682
|
} catch (error) {
|
|
1666
1683
|
console.warn("Error destroying Shaka Player:", error);
|
|
1667
1684
|
} finally {
|
|
1668
1685
|
playerRef.current = null;
|
|
1686
|
+
storedPersistentThisLoadRef.current = false;
|
|
1669
1687
|
}
|
|
1670
1688
|
}
|
|
1671
1689
|
}, [playerRef]);
|
|
@@ -3810,6 +3828,7 @@ var Player = (0, import_react12.forwardRef)(
|
|
|
3810
3828
|
const containerRef = (0, import_react12.useRef)(null);
|
|
3811
3829
|
const [isScriptsLoaded, setIsScriptsLoaded] = (0, import_react12.useState)(false);
|
|
3812
3830
|
const [isInitialLoading, setIsInitialLoading] = (0, import_react12.useState)(true);
|
|
3831
|
+
const [bfResetKey, setBfResetKey] = (0, import_react12.useState)(0);
|
|
3813
3832
|
(0, import_react12.useImperativeHandle)(ref, () => videoRef.current, []);
|
|
3814
3833
|
const { playerRef, initializePlayer, destroyPlayer, isRetrying } = useShakaPlayer({
|
|
3815
3834
|
src,
|
|
@@ -3957,6 +3976,15 @@ var Player = (0, import_react12.forwardRef)(
|
|
|
3957
3976
|
};
|
|
3958
3977
|
loadRequiredScripts();
|
|
3959
3978
|
}, [imaConfig?.adTagUrl, system73Config?.apiKey]);
|
|
3979
|
+
(0, import_react12.useEffect)(() => {
|
|
3980
|
+
const onPageShow = (e) => {
|
|
3981
|
+
if (e && e.persisted) {
|
|
3982
|
+
setBfResetKey((k) => k + 1);
|
|
3983
|
+
}
|
|
3984
|
+
};
|
|
3985
|
+
window.addEventListener("pageshow", onPageShow);
|
|
3986
|
+
return () => window.removeEventListener("pageshow", onPageShow);
|
|
3987
|
+
}, []);
|
|
3960
3988
|
(0, import_react12.useEffect)(() => {
|
|
3961
3989
|
const video = videoRef.current;
|
|
3962
3990
|
if (!video || !isScriptsLoaded) return;
|
|
@@ -3996,7 +4024,7 @@ var Player = (0, import_react12.forwardRef)(
|
|
|
3996
4024
|
destroyMux();
|
|
3997
4025
|
destroyPlayer();
|
|
3998
4026
|
};
|
|
3999
|
-
}, [src, isScriptsLoaded]);
|
|
4027
|
+
}, [src, isScriptsLoaded, bfResetKey]);
|
|
4000
4028
|
(0, import_react12.useEffect)(() => {
|
|
4001
4029
|
const video = videoRef.current;
|
|
4002
4030
|
if (!video) return;
|