JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour

File "player-local-storage.ts"

Full Path: /home/markqprx/iniasli.pro/client/player/utils/player-local-storage.ts
File size: 1.14 KB
MIME-type: text/plain
Charset: utf-8

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`),
  };
}