From 34bc7ab59745f0fd8c507c031d96efc6195f2c52 Mon Sep 17 00:00:00 2001 From: dwithana Date: Thu, 20 Jun 2024 15:41:30 -0400 Subject: [PATCH 1/2] Fix scrubbing for native iOS player --- public/manifests/dev/lunchroom_manners.json | 9 --------- public/manifests/prod/lunchroom_manners.json | 9 --------- src/components/MediaPlayer/MediaPlayer.js | 7 +++++-- .../VideoJS/components/js/VideoJSProgress.js | 10 +++++++--- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/public/manifests/dev/lunchroom_manners.json b/public/manifests/dev/lunchroom_manners.json index 7ed7a3fe..a9911556 100644 --- a/public/manifests/dev/lunchroom_manners.json +++ b/public/manifests/dev/lunchroom_manners.json @@ -273,15 +273,6 @@ } } ], - "start": { - "id": "http://localhost:3003/dev/lunchroom_manners.json", - "type": "SpecificResource", - "source": "http://localhost:3003/dev/lunchroom_manners/canvas/1", - "selector": { - "type": "PointSelector", - "t": 180 - } - }, "rendering": [ { "id": "http://localhost:3003/lunchroom_manners/lunchroom_manners.vtt", diff --git a/public/manifests/prod/lunchroom_manners.json b/public/manifests/prod/lunchroom_manners.json index f70b3c69..052d0634 100644 --- a/public/manifests/prod/lunchroom_manners.json +++ b/public/manifests/prod/lunchroom_manners.json @@ -145,15 +145,6 @@ } } ], - "start": { - "id": "https://iiif-react-media-player.netlify.app/prod/lunchroom_manners.json", - "type": "SpecificResource", - "source": "https://iiif-react-media-player.netlify.app/prod/lunchroom_manners/canvas/1", - "selector": { - "type": "PointSelector", - "t": 180 - } - }, "rendering": [ { "id": "https://iiif-react-media-player.netlify.app/lunchroom_manners/lunchroom_manners.vtt", diff --git a/src/components/MediaPlayer/MediaPlayer.js b/src/components/MediaPlayer/MediaPlayer.js index 1206b742..c54e4241 100644 --- a/src/components/MediaPlayer/MediaPlayer.js +++ b/src/components/MediaPlayer/MediaPlayer.js @@ -58,6 +58,9 @@ const MediaPlayer = ({ manifestState; const { playerFocusElement, currentTime, player } = playerState; + const currentTimeRef = React.useRef(); + currentTimeRef.current = currentTime; + const canvasIndexRef = React.useRef(); canvasIndexRef.current = canvasIndex; @@ -351,7 +354,7 @@ const MediaPlayer = ({ duration: canvasDuration, srcIndex, targets, - currentTime: currentTime || 0, + currentTime: currentTimeRef.current || 0, nextItemClicked, switchPlayer }, @@ -420,7 +423,7 @@ const MediaPlayer = ({ }; } setOptions(videoJsOptions); - }, [ready, cIndex, srcIndex, canvasIsEmpty]); + }, [ready, cIndex, srcIndex, canvasIsEmpty, currentTime]); if ((ready && options != undefined) || canvasIsEmpty) { diff --git a/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js b/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js index 6bba52b0..e699495c 100644 --- a/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js +++ b/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js @@ -3,7 +3,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import videojs from 'video.js'; import '../styles/VideoJSProgress.scss'; -import { IS_MOBILE, IS_IPAD, IS_SAFARI } from '@Services/browser'; +import { IS_MOBILE, IS_IPAD, IS_SAFARI, IS_IPHONE } from '@Services/browser'; const vjsComponent = videojs.getComponent('Component'); @@ -262,8 +262,12 @@ function ProgressBar({ * after a while */ playerEventListener = setInterval(() => { - if (IS_SAFARI) { - // Abortable inerval for Safari browsers, for a smoother scrubbing experience + /** + * Abortable inerval for Safari desktop browsers, for a smoother scrubbing + * experience. + * Mobile devices are excluded since they use native iOS player. + */ + if (IS_SAFARI && !IS_IPHONE) { abortableTimeupdateHandler(); } else { timeUpdateHandler(); From 1932bf6a6fd43f411ef7e9cc161a7e7100311a3f Mon Sep 17 00:00:00 2001 From: dwithana Date: Thu, 20 Jun 2024 16:52:31 -0400 Subject: [PATCH 2/2] Remove structure highlight on the progress bar when player time updates --- src/components/MediaPlayer/VideoJS/VideoJSPlayer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js b/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js index 49c39ae3..95640448 100644 --- a/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js +++ b/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js @@ -713,6 +713,7 @@ function VideoJSPlayer({ */ manifestDispatch({ item: null, type: 'switchItem' }); setActiveId(null); + setFragmentMarker(null); } else { // Set the active segment in state manifestDispatch({ item: activeSegment, type: 'switchItem' });