@@ -6,44 +6,48 @@ import { useCurrentTrack } from '@/player/stores/current-track'
66export const usePlayerMedia = createSharedComposable ( ( ) => {
77 const { track, audio, playing, progress, duration } = usePlayer ( )
88
9+ const { mediaSession } = navigator
10+
911 watch ( track , ( ) => {
1012 if ( track . value ) {
11- navigator . mediaSession . metadata = new MediaMetadata ( {
13+ mediaSession . metadata = new MediaMetadata ( {
1214 title : track . value . title ,
1315 artist : track . value . artist ,
14- artwork : [
15- { src : track . value . cover . normal , type : 'image/jpg' } ,
16- ] ,
16+ artwork : [ 96 , 128 , 192 , 256 , 384 , 512 ] . map ( size => ( {
17+ src : track . value ! . cover . normal ,
18+ sizes : `${ size } x${ size } ` ,
19+ type : 'image/jpeg' ,
20+ } ) ) ,
1721 } )
1822 }
1923 else {
20- navigator . mediaSession . metadata = null
24+ mediaSession . metadata = null
2125 }
2226 } )
2327
2428 watch ( [ track , playing ] , ( [ track , playing ] ) => {
25- navigator . mediaSession . playbackState = ! track ? 'none' : playing ? 'playing' : 'paused'
29+ mediaSession . playbackState = ! track ? 'none' : playing ? 'playing' : 'paused'
2630 } )
2731 watch ( [ progress , duration ] , ( [ progress , duration ] ) => {
2832 if ( duration > 0 ) {
29- navigator . mediaSession . setPositionState ( {
33+ mediaSession . setPositionState ( {
3034 position : progress ,
3135 playbackRate : audio . playbackRate ,
3236 duration,
3337 } )
3438 }
3539 else {
36- navigator . mediaSession . setPositionState ( undefined )
40+ mediaSession . setPositionState ( undefined )
3741 }
3842 } )
3943
4044 const { prev, next } = useCurrentTrack ( )
4145 tryOnMounted ( ( ) => {
42- navigator . mediaSession . setActionHandler ( 'play' , ( ) => playing . value = true )
43- navigator . mediaSession . setActionHandler ( 'pause' , ( ) => playing . value = false )
44- navigator . mediaSession . setActionHandler ( 'previoustrack' , prev )
45- navigator . mediaSession . setActionHandler ( 'nexttrack' , next )
46- navigator . mediaSession . setActionHandler ( 'seekto' , ( { seekTime } ) => progress . value = seekTime )
47- navigator . mediaSession . setActionHandler ( 'stop' , ( ) => track . value = undefined )
46+ mediaSession . setActionHandler ( 'play' , ( ) => playing . value = true )
47+ mediaSession . setActionHandler ( 'pause' , ( ) => playing . value = false )
48+ mediaSession . setActionHandler ( 'previoustrack' , prev )
49+ mediaSession . setActionHandler ( 'nexttrack' , next )
50+ mediaSession . setActionHandler ( 'seekto' , ( { seekTime } ) => progress . value = seekTime )
51+ mediaSession . setActionHandler ( 'stop' , ( ) => track . value = undefined )
4852 } )
4953} )
0 commit comments