mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
prevent mpv hotkey conflict with radio when inactive
This commit is contained in:
@@ -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(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user