@mottosports/motto-video-player 1.0.1-rc.60 → 1.0.1-rc.61
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 +57 -28
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +57 -28
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1160,7 +1160,6 @@ var isPlayReadySupported = () => {
|
|
|
1160
1160
|
return isXbox || (isEdge || isIE) && isWindows;
|
|
1161
1161
|
};
|
|
1162
1162
|
var supportsWidevinePersistentLicenses = () => {
|
|
1163
|
-
return false;
|
|
1164
1163
|
if (typeof navigator === "undefined") {
|
|
1165
1164
|
return false;
|
|
1166
1165
|
}
|
|
@@ -1185,7 +1184,7 @@ var supportsWidevinePersistentLicenses = () => {
|
|
|
1185
1184
|
import initShakaPlayerMux from "@mux/mux-data-shakaplayer";
|
|
1186
1185
|
|
|
1187
1186
|
// package.json
|
|
1188
|
-
var version = "1.0.1-rc.
|
|
1187
|
+
var version = "1.0.1-rc.61";
|
|
1189
1188
|
|
|
1190
1189
|
// src/utils/licenseCache.ts
|
|
1191
1190
|
var PERSISTENT_LICENSE_PREFIX = "motto_lic_";
|
|
@@ -1355,6 +1354,8 @@ var useShakaPlayer = ({
|
|
|
1355
1354
|
const waitingForKeyHandlerRef = useRef(null);
|
|
1356
1355
|
const playbackResumedHandlerRef = useRef(null);
|
|
1357
1356
|
const usingPersistentLicenseRef = useRef(false);
|
|
1357
|
+
const storedPersistentThisLoadRef = useRef(false);
|
|
1358
|
+
const drmExpirationHandlerRef = useRef(null);
|
|
1358
1359
|
const getManifestUrl = useCallback(() => {
|
|
1359
1360
|
let manifestUrl = src.url;
|
|
1360
1361
|
const isDRM = Boolean(src.drm);
|
|
@@ -1386,6 +1387,7 @@ var useShakaPlayer = ({
|
|
|
1386
1387
|
const manifestUrl = getManifestUrl();
|
|
1387
1388
|
let playlistId = src.id;
|
|
1388
1389
|
const isDRM = Boolean(src.drm);
|
|
1390
|
+
storedPersistentThisLoadRef.current = false;
|
|
1389
1391
|
let storedSessionsMetadata = [];
|
|
1390
1392
|
if (isDRM && playlistId) {
|
|
1391
1393
|
storedSessionsMetadata = retrievePersistentLicense(playlistId, src.drm.licenseCacheKey ?? "");
|
|
@@ -1393,7 +1395,8 @@ var useShakaPlayer = ({
|
|
|
1393
1395
|
if (isDRM) {
|
|
1394
1396
|
const drmConfig2 = {
|
|
1395
1397
|
servers: {
|
|
1396
|
-
"com.widevine.alpha":
|
|
1398
|
+
"com.widevine.alpha": "http://localhost:8787/drm/widevine",
|
|
1399
|
+
// src.drm.widevine?.licenseUrl,
|
|
1397
1400
|
"com.microsoft.playready": src.drm.playready?.licenseUrl,
|
|
1398
1401
|
"com.apple.fps": src.drm.fairplay?.licenseUrl
|
|
1399
1402
|
},
|
|
@@ -1498,6 +1501,36 @@ var useShakaPlayer = ({
|
|
|
1498
1501
|
});
|
|
1499
1502
|
}
|
|
1500
1503
|
}
|
|
1504
|
+
if (isDRM && playlistId) {
|
|
1505
|
+
const onDRMSessionUpdate = () => {
|
|
1506
|
+
try {
|
|
1507
|
+
if (storedPersistentThisLoadRef.current) return;
|
|
1508
|
+
const activeDrmSessions = player.getActiveSessionsMetadata?.();
|
|
1509
|
+
if (!activeDrmSessions) return;
|
|
1510
|
+
const persistentSessions = activeDrmSessions.filter(
|
|
1511
|
+
(session) => session.sessionType === "persistent-license"
|
|
1512
|
+
);
|
|
1513
|
+
if (persistentSessions.length > 0) {
|
|
1514
|
+
const sessionsToStore = persistentSessions.map((session) => ({
|
|
1515
|
+
sessionId: session.sessionId,
|
|
1516
|
+
initData: session.initData,
|
|
1517
|
+
initDataType: session.initDataType,
|
|
1518
|
+
keySystem: session.keySystem || "com.widevine.alpha"
|
|
1519
|
+
}));
|
|
1520
|
+
storePersistentLicense(playlistId, src.drm.licenseCacheKey ?? "", sessionsToStore);
|
|
1521
|
+
storedPersistentThisLoadRef.current = true;
|
|
1522
|
+
}
|
|
1523
|
+
} catch (e) {
|
|
1524
|
+
console.warn("Failed to persist licenses on expiration update:", e);
|
|
1525
|
+
}
|
|
1526
|
+
};
|
|
1527
|
+
try {
|
|
1528
|
+
player.addEventListener("drmsessionupdate", onDRMSessionUpdate);
|
|
1529
|
+
drmExpirationHandlerRef.current = onDRMSessionUpdate;
|
|
1530
|
+
} catch (e) {
|
|
1531
|
+
console.warn("Failed to attach drmsessionupdate listener:", e);
|
|
1532
|
+
}
|
|
1533
|
+
}
|
|
1501
1534
|
player?.addEventListener("error", (event) => {
|
|
1502
1535
|
const error = event.detail;
|
|
1503
1536
|
if (error?.code === 7e3) {
|
|
@@ -1561,30 +1594,6 @@ var useShakaPlayer = ({
|
|
|
1561
1594
|
}
|
|
1562
1595
|
}
|
|
1563
1596
|
await player.load(manifestUrl);
|
|
1564
|
-
if (isDRM && playlistId) {
|
|
1565
|
-
try {
|
|
1566
|
-
setTimeout(() => {
|
|
1567
|
-
const activeDrmSessions = player.getActiveSessionsMetadata?.();
|
|
1568
|
-
if (activeDrmSessions) {
|
|
1569
|
-
const persistentSessions = activeDrmSessions.filter(
|
|
1570
|
-
(session) => session.sessionType === "persistent-license"
|
|
1571
|
-
);
|
|
1572
|
-
if (persistentSessions.length > 0) {
|
|
1573
|
-
const sessionsToStore = persistentSessions.map((session) => ({
|
|
1574
|
-
sessionId: session.sessionId,
|
|
1575
|
-
initData: session.initData,
|
|
1576
|
-
initDataType: session.initDataType,
|
|
1577
|
-
keySystem: session.keySystem || "com.widevine.alpha"
|
|
1578
|
-
// fallback
|
|
1579
|
-
}));
|
|
1580
|
-
storePersistentLicense(playlistId, src.drm.licenseCacheKey ?? "", sessionsToStore);
|
|
1581
|
-
}
|
|
1582
|
-
}
|
|
1583
|
-
}, 2e3);
|
|
1584
|
-
} catch (error) {
|
|
1585
|
-
console.warn("Failed to store persistent license sessions:", error);
|
|
1586
|
-
}
|
|
1587
|
-
}
|
|
1588
1597
|
onPlayerReady?.(player);
|
|
1589
1598
|
return player;
|
|
1590
1599
|
} catch (error) {
|
|
@@ -1620,11 +1629,21 @@ var useShakaPlayer = ({
|
|
|
1620
1629
|
window.clearTimeout(waitingForKeyTimerRef.current);
|
|
1621
1630
|
waitingForKeyTimerRef.current = null;
|
|
1622
1631
|
}
|
|
1632
|
+
try {
|
|
1633
|
+
if (drmExpirationHandlerRef.current && playerRef.current?.removeEventListener) {
|
|
1634
|
+
playerRef.current.removeEventListener("drmsessionupdate", drmExpirationHandlerRef.current);
|
|
1635
|
+
}
|
|
1636
|
+
} catch (e) {
|
|
1637
|
+
console.warn("Error removing DRM expiration listener:", e);
|
|
1638
|
+
} finally {
|
|
1639
|
+
drmExpirationHandlerRef.current = null;
|
|
1640
|
+
}
|
|
1623
1641
|
await playerRef.current.destroy();
|
|
1624
1642
|
} catch (error) {
|
|
1625
1643
|
console.warn("Error destroying Shaka Player:", error);
|
|
1626
1644
|
} finally {
|
|
1627
1645
|
playerRef.current = null;
|
|
1646
|
+
storedPersistentThisLoadRef.current = false;
|
|
1628
1647
|
}
|
|
1629
1648
|
}
|
|
1630
1649
|
}, [playerRef]);
|
|
@@ -3769,6 +3788,7 @@ var Player = forwardRef(
|
|
|
3769
3788
|
const containerRef = useRef8(null);
|
|
3770
3789
|
const [isScriptsLoaded, setIsScriptsLoaded] = useState4(false);
|
|
3771
3790
|
const [isInitialLoading, setIsInitialLoading] = useState4(true);
|
|
3791
|
+
const [bfResetKey, setBfResetKey] = useState4(0);
|
|
3772
3792
|
useImperativeHandle(ref, () => videoRef.current, []);
|
|
3773
3793
|
const { playerRef, initializePlayer, destroyPlayer, isRetrying } = useShakaPlayer({
|
|
3774
3794
|
src,
|
|
@@ -3916,6 +3936,15 @@ var Player = forwardRef(
|
|
|
3916
3936
|
};
|
|
3917
3937
|
loadRequiredScripts();
|
|
3918
3938
|
}, [imaConfig?.adTagUrl, system73Config?.apiKey]);
|
|
3939
|
+
useEffect5(() => {
|
|
3940
|
+
const onPageShow = (e) => {
|
|
3941
|
+
if (e && e.persisted) {
|
|
3942
|
+
setBfResetKey((k) => k + 1);
|
|
3943
|
+
}
|
|
3944
|
+
};
|
|
3945
|
+
window.addEventListener("pageshow", onPageShow);
|
|
3946
|
+
return () => window.removeEventListener("pageshow", onPageShow);
|
|
3947
|
+
}, []);
|
|
3919
3948
|
useEffect5(() => {
|
|
3920
3949
|
const video = videoRef.current;
|
|
3921
3950
|
if (!video || !isScriptsLoaded) return;
|
|
@@ -3955,7 +3984,7 @@ var Player = forwardRef(
|
|
|
3955
3984
|
destroyMux();
|
|
3956
3985
|
destroyPlayer();
|
|
3957
3986
|
};
|
|
3958
|
-
}, [src, isScriptsLoaded]);
|
|
3987
|
+
}, [src, isScriptsLoaded, bfResetKey]);
|
|
3959
3988
|
useEffect5(() => {
|
|
3960
3989
|
const video = videoRef.current;
|
|
3961
3990
|
if (!video) return;
|