mirror of
https://github.com/austinried/subtracks.git
synced 2025-12-27 09:09:29 +01:00
fix double events after remote-stop
caused by listeners not being removed
This commit is contained in:
parent
e15a2ebcfc
commit
a0b49ec75f
@ -22,15 +22,29 @@ const setCurrentTrackIdx = (idx?: number) => {
|
||||
}
|
||||
|
||||
module.exports = async function () {
|
||||
const unsubCurrentTrack = useStore.subscribe(
|
||||
(currentTrack?: TrackExt) => {
|
||||
if (currentTrack) {
|
||||
useStore.getState().scrobbleTrack(currentTrack.id)
|
||||
}
|
||||
},
|
||||
state => state.currentTrack,
|
||||
const unsubs: (() => void)[] = []
|
||||
|
||||
unsubs.push(
|
||||
useStore.subscribe(
|
||||
(currentTrack?: TrackExt) => {
|
||||
if (currentTrack) {
|
||||
useStore.getState().scrobbleTrack(currentTrack.id)
|
||||
}
|
||||
},
|
||||
state => state.currentTrack,
|
||||
),
|
||||
)
|
||||
|
||||
const { emitter } = TrackPlayer.addEventListener(Event.RemoteStop, () => {
|
||||
for (const unsub of unsubs) {
|
||||
unsub()
|
||||
}
|
||||
reset()
|
||||
trackPlayerCommands.enqueue(TrackPlayer.destroy)
|
||||
})
|
||||
|
||||
unsubs.push(() => emitter.removeAllListeners())
|
||||
|
||||
TrackPlayer.addEventListener(Event.RemotePlay, () => trackPlayerCommands.enqueue(TrackPlayer.play))
|
||||
TrackPlayer.addEventListener(Event.RemotePause, () => trackPlayerCommands.enqueue(TrackPlayer.pause))
|
||||
|
||||
@ -54,12 +68,6 @@ module.exports = async function () {
|
||||
}
|
||||
})
|
||||
|
||||
TrackPlayer.addEventListener(Event.RemoteStop, () => {
|
||||
unsubCurrentTrack()
|
||||
reset()
|
||||
trackPlayerCommands.enqueue(TrackPlayer.destroy)
|
||||
})
|
||||
|
||||
TrackPlayer.addEventListener(Event.PlaybackState, () => {
|
||||
trackPlayerCommands.enqueue(async () => {
|
||||
setPlayerState(await getPlayerState())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user