Files
mtdb_movie/common/resources/client/player/utils/init-player-media-session.ts
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

36 lines
1.2 KiB
TypeScript
Executable File

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