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 { useCallback, useEffect } from 'react';
import { useIsRadioActive } from '/@/renderer/features/radio/hooks/use-radio-player';
import { usePlayerActions } from '/@/renderer/store';
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;
export const useMainPlayerListener = () => {
const isRadioActive = useIsRadioActive();
const {
decreaseVolume,
increaseVolume,
@@ -46,27 +48,39 @@ export const useMainPlayerListener = () => {
}
mpvPlayerListener.rendererPlayPause(() => {
mediaTogglePlayPause();
if (!isRadioActive) {
mediaTogglePlayPause();
}
});
mpvPlayerListener.rendererNext(() => {
mediaNext();
if (!isRadioActive) {
mediaNext();
}
});
mpvPlayerListener.rendererPrevious(() => {
mediaPrevious();
if (!isRadioActive) {
mediaPrevious();
}
});
mpvPlayerListener.rendererPlay(() => {
mediaPlay();
if (!isRadioActive) {
mediaPlay();
}
});
mpvPlayerListener.rendererPause(() => {
mediaPause();
if (!isRadioActive) {
mediaPause();
}
});
mpvPlayerListener.rendererStop(() => {
mediaStop();
if (!isRadioActive) {
mediaStop();
}
});
mpvPlayerListener.rendererSkipForward(() => {
@@ -121,6 +135,7 @@ export const useMainPlayerListener = () => {
decreaseVolume,
handleMpvError,
increaseVolume,
isRadioActive,
mediaAutoNext,
mediaNext,
mediaPause,
@@ -122,6 +122,7 @@ export const useRadioAudioInstance = () => {
const { setCurrentStreamUrl, setIsPlaying, setStationName } = actions;
const currentStreamUrl = useRadioStore((state) => state.currentStreamUrl);
const isPlaying = useRadioStore((state) => state.isPlaying);
const isRadioActive = useIsRadioActive();
const playbackType = usePlaybackType();
const isUsingMpv = playbackType === PlayerType.LOCAL && mpvPlayer;
@@ -146,7 +147,7 @@ export const useRadioAudioInstance = () => {
]);
useEffect(() => {
if (!isUsingMpv || !mpvPlayerListener || !ipc) {
if (!isUsingMpv || !mpvPlayerListener || !ipc || !isRadioActive) {
return;
}
@@ -173,7 +174,7 @@ export const useRadioAudioInstance = () => {
ipc.removeAllListeners('renderer-player-pause');
ipc.removeAllListeners('renderer-player-stop');
};
}, [isUsingMpv, setIsPlaying, setCurrentStreamUrl, setStationName]);
}, [isUsingMpv, isRadioActive, setIsPlaying, setCurrentStreamUrl, setStationName]);
usePlayerEvents(
{