mirror of
https://github.com/austinried/subtracks.git
synced 2025-12-29 09:29: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 () {
|
module.exports = async function () {
|
||||||
const unsubCurrentTrack = useStore.subscribe(
|
const unsubs: (() => void)[] = []
|
||||||
(currentTrack?: TrackExt) => {
|
|
||||||
if (currentTrack) {
|
unsubs.push(
|
||||||
useStore.getState().scrobbleTrack(currentTrack.id)
|
useStore.subscribe(
|
||||||
}
|
(currentTrack?: TrackExt) => {
|
||||||
},
|
if (currentTrack) {
|
||||||
state => state.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.RemotePlay, () => trackPlayerCommands.enqueue(TrackPlayer.play))
|
||||||
TrackPlayer.addEventListener(Event.RemotePause, () => trackPlayerCommands.enqueue(TrackPlayer.pause))
|
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, () => {
|
TrackPlayer.addEventListener(Event.PlaybackState, () => {
|
||||||
trackPlayerCommands.enqueue(async () => {
|
trackPlayerCommands.enqueue(async () => {
|
||||||
setPlayerState(await getPlayerState())
|
setPlayerState(await getPlayerState())
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user