mirror of
https://github.com/antebudimir/feishin.git
synced 2025-12-31 10:03:33 +00:00
fix playback controls being called multiple times on media key input
This commit is contained in:
parent
68476deb98
commit
1b8661d566
2 changed files with 37 additions and 21 deletions
|
|
@ -57,6 +57,7 @@ export const CenterControls = ({ playersRef }: CenterControlsProps) => {
|
||||||
handlePlay,
|
handlePlay,
|
||||||
handlePlayPause,
|
handlePlayPause,
|
||||||
handlePrevTrack,
|
handlePrevTrack,
|
||||||
|
handleSeekSlider,
|
||||||
handleSkipBackward,
|
handleSkipBackward,
|
||||||
handleSkipForward,
|
handleSkipForward,
|
||||||
handleStop,
|
handleStop,
|
||||||
|
|
@ -84,7 +85,16 @@ export const CenterControls = ({ playersRef }: CenterControlsProps) => {
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
useMediaSession(playersRef);
|
useMediaSession({
|
||||||
|
handleNextTrack,
|
||||||
|
handlePause,
|
||||||
|
handlePlay,
|
||||||
|
handlePrevTrack,
|
||||||
|
handleSeekSlider,
|
||||||
|
handleSkipBackward,
|
||||||
|
handleSkipForward,
|
||||||
|
handleStop,
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
@ -227,22 +237,24 @@ export const CenterControls = ({ playersRef }: CenterControlsProps) => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<PlayerSeekSlider player1={player1} player2={player2} playersRef={playersRef} />
|
<PlayerSeekSlider
|
||||||
|
handleSeekSlider={handleSeekSlider}
|
||||||
|
player1={player1}
|
||||||
|
player2={player2}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const PlayerSeekSlider = ({
|
const PlayerSeekSlider = ({
|
||||||
|
handleSeekSlider,
|
||||||
player1,
|
player1,
|
||||||
player2,
|
player2,
|
||||||
playersRef,
|
|
||||||
}: {
|
}: {
|
||||||
|
handleSeekSlider: (e: any | number) => void;
|
||||||
player1: any;
|
player1: any;
|
||||||
player2: any;
|
player2: any;
|
||||||
playersRef: any;
|
|
||||||
}) => {
|
}) => {
|
||||||
const { handleSeekSlider } = useCenterControls({ playersRef });
|
|
||||||
|
|
||||||
const player = useCurrentPlayer();
|
const player = useCurrentPlayer();
|
||||||
const playbackType = usePlaybackType();
|
const playbackType = usePlaybackType();
|
||||||
const setCurrentTime = useSetCurrentTime();
|
const setCurrentTime = useSetCurrentTime();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
import { useCenterControls } from '/@/renderer/features/player/hooks/use-center-controls';
|
|
||||||
import {
|
import {
|
||||||
useCurrentSong,
|
useCurrentSong,
|
||||||
useCurrentStatus,
|
useCurrentStatus,
|
||||||
|
|
@ -9,26 +8,31 @@ import {
|
||||||
} from '/@/renderer/store';
|
} from '/@/renderer/store';
|
||||||
import { PlayerStatus } from '/@/shared/types/types';
|
import { PlayerStatus } from '/@/shared/types/types';
|
||||||
|
|
||||||
export const useMediaSession = (playersRef: { player1: any; player2: any }) => {
|
export const useMediaSession = ({
|
||||||
|
handleNextTrack,
|
||||||
|
handlePause,
|
||||||
|
handlePlay,
|
||||||
|
handlePrevTrack,
|
||||||
|
handleSeekSlider,
|
||||||
|
handleSkipBackward,
|
||||||
|
handleSkipForward,
|
||||||
|
handleStop,
|
||||||
|
}: {
|
||||||
|
handleNextTrack: () => void;
|
||||||
|
handlePause: () => void;
|
||||||
|
handlePlay: () => void;
|
||||||
|
handlePrevTrack: () => void;
|
||||||
|
handleSeekSlider: (e: any | number) => void;
|
||||||
|
handleSkipBackward: (seconds: number) => void;
|
||||||
|
handleSkipForward: (seconds: number) => void;
|
||||||
|
handleStop: () => void;
|
||||||
|
}) => {
|
||||||
const { mediaSession: mediaSessionEnabled } = usePlaybackSettings();
|
const { mediaSession: mediaSessionEnabled } = usePlaybackSettings();
|
||||||
const playerStatus = useCurrentStatus();
|
const playerStatus = useCurrentStatus();
|
||||||
const currentSong = useCurrentSong();
|
const currentSong = useCurrentSong();
|
||||||
const mediaSession = navigator.mediaSession;
|
const mediaSession = navigator.mediaSession;
|
||||||
const skip = useSettingsStore((state) => state.general.skipButtons);
|
const skip = useSettingsStore((state) => state.general.skipButtons);
|
||||||
|
|
||||||
const {
|
|
||||||
handleNextTrack,
|
|
||||||
handlePause,
|
|
||||||
handlePlay,
|
|
||||||
handlePrevTrack,
|
|
||||||
handleSeekSlider,
|
|
||||||
handleSkipBackward,
|
|
||||||
handleSkipForward,
|
|
||||||
handleStop,
|
|
||||||
} = useCenterControls({
|
|
||||||
playersRef,
|
|
||||||
});
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!mediaSessionEnabled || !mediaSession) {
|
if (!mediaSessionEnabled || !mediaSession) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue