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

56 lines
1.7 KiB
TypeScript
Executable File

import {useContext, useMemo} from 'react';
import {PlayerStoreContext} from '@common/player/player-context';
import {MediaItem} from '@common/player/media-item';
export type PlayerActions = ReturnType<typeof usePlayerActions>;
export function usePlayerActions() {
const store = useContext(PlayerStoreContext);
return useMemo(() => {
const s = store.getState();
const overrideQueueAndPlay = async (
mediaItems: MediaItem[],
queuePointer?: number
) => {
s.stop();
await s.overrideQueue(mediaItems, queuePointer);
return s.play();
};
return {
play: s.play,
playNext: s.playNext,
playPrevious: s.playPrevious,
pause: s.pause,
subscribe: s.subscribe,
emit: s.emit,
getCurrentTime: s.getCurrentTime,
seek: s.seek,
toggleRepeatMode: s.toggleRepeatMode,
toggleShuffling: s.toggleShuffling,
getState: store.getState,
setVolume: s.setVolume,
setMuted: s.setMuted,
appendToQueue: s.appendToQueue,
removeFromQueue: s.removeFromQueue,
enterFullscreen: s.enterFullscreen,
exitFullscreen: s.exitFullscreen,
toggleFullscreen: s.toggleFullscreen,
enterPip: s.enterPip,
exitPip: s.exitPip,
setTextTrackVisibility: s.setTextTrackVisibility,
setCurrentTextTrack: s.setCurrentTextTrack,
setCurrentAudioTrack: s.setCurrentAudioTrack,
setIsSeeking: s.setIsSeeking,
setControlsVisible: s.setControlsVisible,
cue: s.cue,
overrideQueueAndPlay,
overrideQueue: s.overrideQueue,
setPlaybackRate: s.setPlaybackRate,
setPlaybackQuality: s.setPlaybackQuality,
};
}, [store]);
}