Set volume to 100% when web player is in mobile mode.

Fix #1429
This commit is contained in:
Deluan 2021-11-19 19:44:59 -05:00
parent ce7940bbfc
commit 3e282df639

View File

@ -1,4 +1,4 @@
import React, { useCallback, useMemo, useState } from 'react' import React, { useCallback, useEffect, useMemo, useState } from 'react'
import { useDispatch, useSelector } from 'react-redux' import { useDispatch, useSelector } from 'react-redux'
import { useMediaQuery } from '@material-ui/core' import { useMediaQuery } from '@material-ui/core'
import { ThemeProvider } from '@material-ui/core/styles' import { ThemeProvider } from '@material-ui/core/styles'
@ -36,6 +36,9 @@ const Player = () => {
const [preloaded, setPreload] = useState(false) const [preloaded, setPreload] = useState(false)
const [audioInstance, setAudioInstance] = useState(null) const [audioInstance, setAudioInstance] = useState(null)
const isDesktop = useMediaQuery('(min-width:810px)') const isDesktop = useMediaQuery('(min-width:810px)')
const isMobilePlayer = useMediaQuery(
'(max-width: 768px) and (orientation : portrait)'
)
const { authenticated } = useAuthState() const { authenticated } = useAuthState()
const visible = authenticated && playerState.queue.length > 0 const visible = authenticated && playerState.queue.length > 0
const classes = useStyle({ const classes = useStyle({
@ -86,9 +89,9 @@ const Player = () => {
autoPlay: playerState.clear || playerState.playIndex === 0, autoPlay: playerState.clear || playerState.playIndex === 0,
clearPriorAudioLists: playerState.clear, clearPriorAudioLists: playerState.clear,
extendsContent: <PlayerToolbar id={current.trackId} />, extendsContent: <PlayerToolbar id={current.trackId} />,
defaultVolume: playerState.volume, defaultVolume: isMobilePlayer ? 1 : playerState.volume,
} }
}, [playerState, defaultOptions]) }, [playerState, defaultOptions, isMobilePlayer])
const onAudioListsChange = useCallback( const onAudioListsChange = useCallback(
(_, audioLists, audioInfo) => dispatch(syncQueue(audioInfo, audioLists)), (_, audioLists, audioInfo) => dispatch(syncQueue(audioInfo, audioLists)),
@ -215,6 +218,12 @@ const Player = () => {
[audioInstance, playerState] [audioInstance, playerState]
) )
useEffect(() => {
if (isMobilePlayer && audioInstance) {
audioInstance.volume = 1
}
}, [isMobilePlayer, audioInstance])
return ( return (
<ThemeProvider theme={createMuiTheme(theme)}> <ThemeProvider theme={createMuiTheme(theme)}>
<ReactJkMusicPlayer <ReactJkMusicPlayer