rebuild queue with new urls on net state change

This commit is contained in:
austinried
2021-08-17 10:58:11 +09:00
parent 88d0c6089e
commit 44617740fd
11 changed files with 124 additions and 21 deletions

View File

@@ -2,6 +2,7 @@ import { getCurrentTrack, getPlayerState, TrackExt, trackPlayerCommands } from '
import TrackPlayer, { Event, State } from 'react-native-track-player'
import { useStore } from './state/store'
import { unstable_batchedUpdates } from 'react-native'
import NetInfo, { NetInfoStateType } from '@react-native-community/netinfo'
const reset = () => {
unstable_batchedUpdates(() => {
@@ -21,6 +22,12 @@ const setCurrentTrackIdx = (idx?: number) => {
})
}
const setNetState = (netState: 'mobile' | 'wifi') => {
unstable_batchedUpdates(() => {
useStore.getState().setNetState(netState)
})
}
let serviceCreated = false
const createService = async () => {
useStore.subscribe(
@@ -33,6 +40,14 @@ const createService = async () => {
(prev, next) => prev?.id === next?.id,
)
NetInfo.addEventListener(state => {
const currentType = useStore.getState().netState
const newType = state.type === NetInfoStateType.cellular ? 'mobile' : 'wifi'
if (currentType !== newType) {
setNetState(newType)
}
})
TrackPlayer.addEventListener(Event.RemoteStop, () => {
reset()
trackPlayerCommands.enqueue(TrackPlayer.destroy)