added settings for min/max buffer

This commit is contained in:
austinried
2021-08-20 16:32:24 +09:00
parent 694d730ebd
commit c83fb43140
6 changed files with 202 additions and 23 deletions

View File

@@ -2,7 +2,7 @@ import { NoClientError } from '@app/models/error'
import { Song } from '@app/models/music'
import PromiseQueue from '@app/util/PromiseQueue'
import produce from 'immer'
import TrackPlayer, { RepeatMode, State, Track } from 'react-native-track-player'
import TrackPlayer, { PlayerOptions, RepeatMode, State, Track } from 'react-native-track-player'
import { GetState, SetState } from 'zustand'
import { Store } from './store'
@@ -67,6 +67,8 @@ export type TrackPlayerSlice = {
rebuildQueue: () => Promise<void>
buildStreamUri: (id: string) => string
resetTrackPlayerState: () => void
getPlayerOptions: () => PlayerOptions
}
export const selectTrackPlayer = {
@@ -200,7 +202,7 @@ export const createTrackPlayerSlice = (set: SetState<Store>, get: GetState<Store
return trackPlayerCommands.enqueue(async () => {
const shuffled = shuffle !== undefined ? shuffle : !!get().shuffleOrder
await TrackPlayer.setupPlayer()
await TrackPlayer.setupPlayer(get().getPlayerOptions())
await TrackPlayer.reset()
if (songs.length === 0) {
@@ -298,6 +300,7 @@ export const createTrackPlayerSlice = (set: SetState<Store>, get: GetState<Store
const queueContextType = get().queueContextType
await TrackPlayer.reset()
await TrackPlayer.setupPlayer(get().getPlayerOptions())
try {
for (const track of queue) {
@@ -356,6 +359,14 @@ export const createTrackPlayerSlice = (set: SetState<Store>, get: GetState<Store
progress: { position: 0, duration: 0, buffered: 0 },
})
},
getPlayerOptions: () => {
return {
minBuffer: get().settings.minBuffer,
playBuffer: get().settings.minBuffer / 2,
maxBuffer: get().settings.maxBuffer,
}
},
})
export const getQueue = async (): Promise<TrackExt[]> => {