mirror of
https://github.com/navidrome/navidrome.git
synced 2026-05-03 06:51:16 +00:00
Merge 16a46afe3db5abe484ec4c443acf9fa3c431b67c into 2b9f32699348d520fc96acbd74be24b12702b02a
This commit is contained in:
commit
6517405da1
@ -222,6 +222,13 @@ const Player = () => {
|
|||||||
}
|
}
|
||||||
}, [playerState, defaultOptions, isMobilePlayer])
|
}, [playerState, defaultOptions, isMobilePlayer])
|
||||||
|
|
||||||
|
// ReactJKMusicPlayer doesn't set playbackState, so we do it manually
|
||||||
|
const updateMediaSessionPlaybackState = useCallback((state) => {
|
||||||
|
if ('mediaSession' in navigator) {
|
||||||
|
navigator.mediaSession.playbackState = state
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
const onAudioListsChange = useCallback(
|
const onAudioListsChange = useCallback(
|
||||||
(_, audioLists, audioInfo) => dispatch(syncQueue(audioInfo, audioLists)),
|
(_, audioLists, audioInfo) => dispatch(syncQueue(audioInfo, audioLists)),
|
||||||
[dispatch],
|
[dispatch],
|
||||||
@ -281,6 +288,7 @@ const Player = () => {
|
|||||||
context.resume()
|
context.resume()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateMediaSessionPlaybackState('playing')
|
||||||
dispatch(currentPlaying(info))
|
dispatch(currentPlaying(info))
|
||||||
if (startTime === null) {
|
if (startTime === null) {
|
||||||
setStartTime(Date.now())
|
setStartTime(Date.now())
|
||||||
@ -309,7 +317,13 @@ const Player = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[context, dispatch, showNotifications, startTime],
|
[
|
||||||
|
context,
|
||||||
|
dispatch,
|
||||||
|
showNotifications,
|
||||||
|
startTime,
|
||||||
|
updateMediaSessionPlaybackState,
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
const onAudioPlayTrackChange = useCallback(() => {
|
const onAudioPlayTrackChange = useCallback(() => {
|
||||||
@ -322,12 +336,16 @@ const Player = () => {
|
|||||||
}, [scrobbled, startTime])
|
}, [scrobbled, startTime])
|
||||||
|
|
||||||
const onAudioPause = useCallback(
|
const onAudioPause = useCallback(
|
||||||
(info) => dispatch(currentPlaying(info)),
|
(info) => {
|
||||||
[dispatch],
|
updateMediaSessionPlaybackState('paused')
|
||||||
|
dispatch(currentPlaying(info))
|
||||||
|
},
|
||||||
|
[dispatch, updateMediaSessionPlaybackState],
|
||||||
)
|
)
|
||||||
|
|
||||||
const onAudioEnded = useCallback(
|
const onAudioEnded = useCallback(
|
||||||
(currentPlayId, audioLists, info) => {
|
(currentPlayId, audioLists, info) => {
|
||||||
|
updateMediaSessionPlaybackState('none')
|
||||||
setScrobbled(false)
|
setScrobbled(false)
|
||||||
setStartTime(null)
|
setStartTime(null)
|
||||||
dispatch(currentPlaying(info))
|
dispatch(currentPlaying(info))
|
||||||
@ -336,7 +354,7 @@ const Player = () => {
|
|||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
.catch((e) => console.log('Keepalive error:', e))
|
.catch((e) => console.log('Keepalive error:', e))
|
||||||
},
|
},
|
||||||
[dispatch, dataProvider],
|
[dispatch, dataProvider, updateMediaSessionPlaybackState],
|
||||||
)
|
)
|
||||||
|
|
||||||
const onCoverClick = useCallback((mode, audioLists, audioInfo) => {
|
const onCoverClick = useCallback((mode, audioLists, audioInfo) => {
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import { useCallback } from 'react'
|
||||||
import ReactJkMusicPlayer from 'navidrome-music-player'
|
import ReactJkMusicPlayer from 'navidrome-music-player'
|
||||||
import config, { shareInfo } from '../config'
|
import config, { shareInfo } from '../config'
|
||||||
import { shareCoverUrl, shareDownloadUrl, shareStreamUrl } from '../utils'
|
import { shareCoverUrl, shareDownloadUrl, shareStreamUrl } from '../utils'
|
||||||
@ -39,6 +40,35 @@ const SharePlayer = () => {
|
|||||||
src: shareDownloadUrl(shareInfo?.id),
|
src: shareDownloadUrl(shareInfo?.id),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReactJKMusicPlayer doesn't set playbackState, so we do it manually
|
||||||
|
const updateMediaSessionPlaybackState = useCallback((state) => {
|
||||||
|
if ('mediaSession' in navigator) {
|
||||||
|
navigator.mediaSession.playbackState = state
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
const onAudioPlay = useCallback(
|
||||||
|
(_info) => {
|
||||||
|
updateMediaSessionPlaybackState('playing')
|
||||||
|
},
|
||||||
|
[updateMediaSessionPlaybackState],
|
||||||
|
)
|
||||||
|
|
||||||
|
const onAudioPause = useCallback(
|
||||||
|
(_info) => {
|
||||||
|
updateMediaSessionPlaybackState('paused')
|
||||||
|
},
|
||||||
|
[updateMediaSessionPlaybackState],
|
||||||
|
)
|
||||||
|
|
||||||
|
const onAudioEnded = useCallback(
|
||||||
|
(_currentPlayId, _audioLists, _info) => {
|
||||||
|
updateMediaSessionPlaybackState('none')
|
||||||
|
},
|
||||||
|
[updateMediaSessionPlaybackState],
|
||||||
|
)
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
audioLists: list,
|
audioLists: list,
|
||||||
mode: 'full',
|
mode: 'full',
|
||||||
@ -59,6 +89,9 @@ const SharePlayer = () => {
|
|||||||
<ReactJkMusicPlayer
|
<ReactJkMusicPlayer
|
||||||
{...options}
|
{...options}
|
||||||
className={classes.player}
|
className={classes.player}
|
||||||
|
onAudioPlay={onAudioPlay}
|
||||||
|
onAudioPause={onAudioPause}
|
||||||
|
onAudioEnded={onAudioEnded}
|
||||||
onBeforeAudioDownload={onBeforeAudioDownload}
|
onBeforeAudioDownload={onBeforeAudioDownload}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user