prevent mpv hotkey conflict with radio when inactive

This commit is contained in:
jeffvli
2026-01-17 20:29:57 -08:00
parent 123f09da6c
commit ea46b98400
2 changed files with 24 additions and 8 deletions
@@ -2,6 +2,7 @@ import { t } from 'i18next';
import isElectron from 'is-electron'; import isElectron from 'is-electron';
import { useCallback, useEffect } from 'react'; import { useCallback, useEffect } from 'react';
import { useIsRadioActive } from '/@/renderer/features/radio/hooks/use-radio-player';
import { usePlayerActions } from '/@/renderer/store'; import { usePlayerActions } from '/@/renderer/store';
import { toast } from '/@/shared/components/toast/toast'; import { toast } from '/@/shared/components/toast/toast';
@@ -10,6 +11,7 @@ const mpvPlayerListener = isElectron() ? window.api.mpvPlayerListener : null;
const ipc = isElectron() ? window.api.ipc : null; const ipc = isElectron() ? window.api.ipc : null;
export const useMainPlayerListener = () => { export const useMainPlayerListener = () => {
const isRadioActive = useIsRadioActive();
const { const {
decreaseVolume, decreaseVolume,
increaseVolume, increaseVolume,
@@ -46,27 +48,39 @@ export const useMainPlayerListener = () => {
} }
mpvPlayerListener.rendererPlayPause(() => { mpvPlayerListener.rendererPlayPause(() => {
if (!isRadioActive) {
mediaTogglePlayPause(); mediaTogglePlayPause();
}
}); });
mpvPlayerListener.rendererNext(() => { mpvPlayerListener.rendererNext(() => {
if (!isRadioActive) {
mediaNext(); mediaNext();
}
}); });
mpvPlayerListener.rendererPrevious(() => { mpvPlayerListener.rendererPrevious(() => {
if (!isRadioActive) {
mediaPrevious(); mediaPrevious();
}
}); });
mpvPlayerListener.rendererPlay(() => { mpvPlayerListener.rendererPlay(() => {
if (!isRadioActive) {
mediaPlay(); mediaPlay();
}
}); });
mpvPlayerListener.rendererPause(() => { mpvPlayerListener.rendererPause(() => {
if (!isRadioActive) {
mediaPause(); mediaPause();
}
}); });
mpvPlayerListener.rendererStop(() => { mpvPlayerListener.rendererStop(() => {
if (!isRadioActive) {
mediaStop(); mediaStop();
}
}); });
mpvPlayerListener.rendererSkipForward(() => { mpvPlayerListener.rendererSkipForward(() => {
@@ -121,6 +135,7 @@ export const useMainPlayerListener = () => {
decreaseVolume, decreaseVolume,
handleMpvError, handleMpvError,
increaseVolume, increaseVolume,
isRadioActive,
mediaAutoNext, mediaAutoNext,
mediaNext, mediaNext,
mediaPause, mediaPause,
@@ -122,6 +122,7 @@ export const useRadioAudioInstance = () => {
const { setCurrentStreamUrl, setIsPlaying, setStationName } = actions; const { setCurrentStreamUrl, setIsPlaying, setStationName } = actions;
const currentStreamUrl = useRadioStore((state) => state.currentStreamUrl); const currentStreamUrl = useRadioStore((state) => state.currentStreamUrl);
const isPlaying = useRadioStore((state) => state.isPlaying); const isPlaying = useRadioStore((state) => state.isPlaying);
const isRadioActive = useIsRadioActive();
const playbackType = usePlaybackType(); const playbackType = usePlaybackType();
const isUsingMpv = playbackType === PlayerType.LOCAL && mpvPlayer; const isUsingMpv = playbackType === PlayerType.LOCAL && mpvPlayer;
@@ -146,7 +147,7 @@ export const useRadioAudioInstance = () => {
]); ]);
useEffect(() => { useEffect(() => {
if (!isUsingMpv || !mpvPlayerListener || !ipc) { if (!isUsingMpv || !mpvPlayerListener || !ipc || !isRadioActive) {
return; return;
} }
@@ -173,7 +174,7 @@ export const useRadioAudioInstance = () => {
ipc.removeAllListeners('renderer-player-pause'); ipc.removeAllListeners('renderer-player-pause');
ipc.removeAllListeners('renderer-player-stop'); ipc.removeAllListeners('renderer-player-stop');
}; };
}, [isUsingMpv, setIsPlaying, setCurrentStreamUrl, setStationName]); }, [isUsingMpv, isRadioActive, setIsPlaying, setCurrentStreamUrl, setStationName]);
usePlayerEvents( usePlayerEvents(
{ {