From 9d1ffa9821aa646a965a2dcc6c92c6ae77b239fc Mon Sep 17 00:00:00 2001 From: DmitrySychugov Date: Fri, 30 Dec 2022 22:51:52 +0500 Subject: [PATCH] Web: Components: fixed sound saving, video swipe --- .../viewer/sub-components/viewer-player.js | 81 ++++++++++++++----- 1 file changed, 61 insertions(+), 20 deletions(-) diff --git a/packages/components/viewer/sub-components/viewer-player.js b/packages/components/viewer/sub-components/viewer-player.js index 1ee946d2ee..ad011233a9 100644 --- a/packages/components/viewer/sub-components/viewer-player.js +++ b/packages/components/viewer/sub-components/viewer-player.js @@ -315,6 +315,10 @@ export default function ViewerPlayer(props) { playlistPos, } = props; + const localStorageVolume = localStorage.getItem("player-volume"); + const stateVolume = + localStorageVolume !== null ? Number(localStorageVolume) : 100; + const initialState = { width: 0, height: 0, @@ -330,7 +334,7 @@ export default function ViewerPlayer(props) { volumeSelection: false, speedState: 1, isOpenContext: false, - volume: 100, + volume: stateVolume, size: "0%", opacity: 1, deltaY: 0, @@ -357,9 +361,11 @@ export default function ViewerPlayer(props) { const inputRef = React.useRef(null); const volumeRef = React.useRef(null); + const actionRef = React.useRef(null); + const mobileProgressRef = React.useRef(null); const [state, dispatch] = React.useReducer(reducer, initialState); - const [currentVolume, setCurrentVolume] = React.useState(100); + const [currentVolume, setCurrentVolume] = React.useState(stateVolume); const speedIcons = [, , , ]; const handlers = useSwipeable({ onSwiping: (e) => { @@ -438,6 +444,8 @@ export default function ViewerPlayer(props) { setCurrentVolume(e.target.value); + localStorage.setItem("player-volume", e.target.value); + dispatch( createAction(ACTION_TYPES.update, { isMuted: volume ? false : true, @@ -447,10 +455,22 @@ export default function ViewerPlayer(props) { }; const toggleVolumeMute = () => { + let volume = null; + + if (!state.isMuted) { + localStorage.setItem("player-volume", 0); + } + + if (state.isMuted) { + volume = currentVolume === 0 ? 100 : currentVolume; + videoRef.current.volume = volume / 100; + localStorage.setItem("player-volume", volume); + } + dispatch( createAction(ACTION_TYPES.update, { isMuted: !state.isMuted, - volume: state.volume ? 0 : currentVolume, + volume: state.volume ? 0 : volume, }) ); }; @@ -681,14 +701,13 @@ export default function ViewerPlayer(props) { duration: lasting, progress: 0, isPlaying: false, - isMuted: false, isFullScreen: state.isFullScreen, speedSelection: false, - volume: state.volume, opacity: 1, deltaY: 0, deltaX: 0, speedState: 1, + isLoaded: true, }) ); } @@ -721,28 +740,49 @@ export default function ViewerPlayer(props) { opacity: `${state.opacity}`, width: `${state.width}px`, height: `${state.height}px`, + top: 0, + position: "fixed", transform: ` translateX(${state.left !== null ? state.left + "px" : "auto"}) translateY(${ state.top }px)`, }; return ( - +
{isMobileOnly && mobileDetails}
- +
+ +
{!state.isPlaying && !isAudio && (
@@ -772,7 +813,7 @@ translateX(${state.left !== null ? state.left + "px" : "auto"}) translateY(${ {displayUI && ( -
+
-
+