feishin/src/renderer/features/player/hooks/use-right-controls.ts

45 lines
974 B
TypeScript
Raw Normal View History

2022-12-19 15:59:14 -08:00
import { useEffect } from 'react';
import isElectron from 'is-electron';
import { useMuted, usePlayerControls, useVolume } from '/@/renderer/store';
2022-12-25 01:25:46 -08:00
const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
2022-12-19 15:59:14 -08:00
export const useRightControls = () => {
const { setVolume, setMuted } = usePlayerControls();
const volume = useVolume();
const muted = useMuted();
// Ensure that the mpv player volume is set on startup
useEffect(() => {
if (isElectron()) {
mpvPlayer.volume(volume);
if (muted) {
mpvPlayer.mute();
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const handleVolumeSlider = (e: number) => {
mpvPlayer.volume(e);
setVolume(e);
};
const handleVolumeSliderState = (e: number) => {
setVolume(e);
};
const handleMute = () => {
setMuted(!muted);
mpvPlayer.mute();
};
return {
handleMute,
handleVolumeSlider,
handleVolumeSliderState,
};
};