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