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

File "init-player-media-session.ts"

Full Path: /home/markqprx/iniasli.pro/client/player/utils/init-player-media-session.ts
File size: 1.17 KB
MIME-type: text/plain
Charset: utf-8

import {Optional} from 'utility-types';
import {PlayerState} from '@common/player/state/player-state';
import {PlayerStoreOptions} from '@common/player/state/player-store-options';

export function initPlayerMediaSession(
  state: () => PlayerState,
  options: PlayerStoreOptions
) {
  if ('mediaSession' in navigator) {
    const actionHandlers: Optional<
      Record<MediaSessionAction, MediaSessionActionHandler>
    > = {
      play: () => state().play(),
      pause: () => state().pause(),
      previoustrack: () => state().playPrevious(),
      nexttrack: () => state().playNext(),
      stop: () => state().stop(),
      seekbackward: () => state().seek(state().getCurrentTime() - 10),
      seekforward: () => state().seek(state().getCurrentTime() + 10),
      seekto: details => state().seek(details.seekTime || 0),
    };
    for (const key in actionHandlers) {
      try {
        navigator.mediaSession.setActionHandler(
          key as MediaSessionAction,
          actionHandlers[key as MediaSessionAction]!
        );
      } catch (error) {}
    }
    const cuedMedia = state().cuedMedia;
    if (cuedMedia) {
      options.setMediaSessionMetadata?.(cuedMedia);
    }
  }
}