33
common/resources/client/player/utils/player-local-storage.ts
Executable file
33
common/resources/client/player/utils/player-local-storage.ts
Executable file
@@ -0,0 +1,33 @@
|
||||
import {getFromLocalStorage} from '@common/utils/hooks/local-storage';
|
||||
import {PlayerStoreOptions} from '@common/player/state/player-store-options';
|
||||
import {PlayerState} from '@common/player/state/player-state';
|
||||
|
||||
export interface PersistablePlayerState {
|
||||
muted?: PlayerState['muted'];
|
||||
repeat?: PlayerState['repeat'];
|
||||
shuffling?: PlayerState['shuffling'];
|
||||
volume?: PlayerState['volume'];
|
||||
}
|
||||
|
||||
export interface PlayerInitialData {
|
||||
state?: PersistablePlayerState;
|
||||
queue?: PlayerState['originalQueue'];
|
||||
cuedMediaId?: string | number;
|
||||
}
|
||||
|
||||
export function getPlayerStateFromLocalStorage(
|
||||
id: string | number,
|
||||
options?: PlayerStoreOptions
|
||||
): PlayerInitialData {
|
||||
const defaultVolume = options?.defaultVolume || 30;
|
||||
return {
|
||||
state: {
|
||||
muted: getFromLocalStorage(`player.${id}.muted`) ?? false,
|
||||
repeat: getFromLocalStorage(`player.${id}.repeat`) ?? 'all',
|
||||
shuffling: getFromLocalStorage(`player.${id}.shuffling`) ?? false,
|
||||
volume: getFromLocalStorage(`player.${id}.volume`) ?? defaultVolume,
|
||||
},
|
||||
queue: getFromLocalStorage(`player.${id}.queue`, []),
|
||||
cuedMediaId: getFromLocalStorage(`player.${id}.cuedMediaId`),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user