mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +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 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(
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user