From ea46b98400b71c1adc0cd9ac105c6c2127aff259 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 17 Jan 2026 20:29:57 -0800 Subject: [PATCH] prevent mpv hotkey conflict with radio when inactive --- .../hooks/use-main-player-listener.tsx | 27 ++++++++++++++----- .../features/radio/hooks/use-radio-player.ts | 5 ++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx b/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx index c9e5cd42b..f298daf9b 100644 --- a/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx +++ b/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx @@ -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, diff --git a/src/renderer/features/radio/hooks/use-radio-player.ts b/src/renderer/features/radio/hooks/use-radio-player.ts index 3c2779b34..30d417825 100644 --- a/src/renderer/features/radio/hooks/use-radio-player.ts +++ b/src/renderer/features/radio/hooks/use-radio-player.ts @@ -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( {