mirror of
https://github.com/austinried/subtracks.git
synced 2025-12-27 00:59:28 +01:00
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { getCurrentTrack, getPlayerState, trackPlayerCommands } from '@app/state/trackplayer'
|
|
import TrackPlayer, { Event } from 'react-native-track-player'
|
|
import { useStore } from './state/store'
|
|
|
|
module.exports = async function () {
|
|
TrackPlayer.addEventListener(Event.RemotePlay, () => trackPlayerCommands.enqueue(TrackPlayer.play))
|
|
TrackPlayer.addEventListener(Event.RemotePause, () => trackPlayerCommands.enqueue(TrackPlayer.pause))
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteNext, () =>
|
|
trackPlayerCommands.enqueue(() => TrackPlayer.skipToNext().catch(() => {})),
|
|
)
|
|
TrackPlayer.addEventListener(Event.RemotePrevious, () =>
|
|
trackPlayerCommands.enqueue(() => TrackPlayer.skipToPrevious().catch(() => {})),
|
|
)
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteDuck, data => {
|
|
if (data.permanent) {
|
|
trackPlayerCommands.enqueue(TrackPlayer.stop)
|
|
return
|
|
}
|
|
|
|
if (data.paused) {
|
|
trackPlayerCommands.enqueue(TrackPlayer.pause)
|
|
} else {
|
|
trackPlayerCommands.enqueue(TrackPlayer.play)
|
|
}
|
|
})
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteStop, () => {
|
|
useStore.getState().reset()
|
|
trackPlayerCommands.enqueue(TrackPlayer.destroy)
|
|
})
|
|
|
|
TrackPlayer.addEventListener(Event.PlaybackState, () => {
|
|
trackPlayerCommands.enqueue(async () => {
|
|
useStore.getState().setPlayerState(await getPlayerState())
|
|
})
|
|
})
|
|
|
|
TrackPlayer.addEventListener(Event.PlaybackTrackChanged, () => {
|
|
useStore.getState().setProgress({ position: 0, duration: 0, buffered: 0 })
|
|
trackPlayerCommands.enqueue(async () => {
|
|
useStore.getState().setCurrentTrackIdx(await getCurrentTrack())
|
|
})
|
|
})
|
|
|
|
TrackPlayer.addEventListener(Event.PlaybackQueueEnded, () => {
|
|
trackPlayerCommands.enqueue(async () => {
|
|
useStore.getState().setCurrentTrackIdx(await getCurrentTrack())
|
|
})
|
|
})
|
|
|
|
TrackPlayer.addEventListener(Event.PlaybackMetadataReceived, () => {
|
|
useStore.getState().setCurrentTrackIdx(useStore.getState().currentTrackIdx)
|
|
})
|
|
}
|