reimplement playback hotkeys

This commit is contained in:
jeffvli
2025-11-29 22:04:10 -08:00
parent 801e2cdcf4
commit aab19b289b
2 changed files with 42 additions and 0 deletions
@@ -0,0 +1,40 @@
import { useMemo } from 'react';
import { useHotkeySettings, usePlayerStore } from '/@/renderer/store';
import { HotkeyItem, useHotkeys } from '/@/shared/hooks/use-hotkeys';
export const usePlaybackHotkeys = () => {
const { bindings } = useHotkeySettings();
const player = usePlayerStore();
const playbackHotkeysItems = useMemo(() => {
const hotkeyItems: HotkeyItem[] = [];
const bindingHandlers: Array<{
binding: (typeof bindings)[keyof typeof bindings];
handler: () => void;
}> = [
{ binding: bindings.next, handler: () => player.mediaNext() },
{ binding: bindings.pause, handler: () => player.mediaPause() },
{ binding: bindings.play, handler: () => player.mediaPlay() },
{ binding: bindings.playPause, handler: () => player.mediaTogglePlayPause() },
{ binding: bindings.previous, handler: () => player.mediaPrevious() },
{ binding: bindings.skipBackward, handler: () => player.mediaSkipBackward() },
{ binding: bindings.skipForward, handler: () => player.mediaSkipForward() },
{ binding: bindings.stop, handler: () => player.mediaStop() },
{ binding: bindings.toggleRepeat, handler: () => player.toggleRepeat() },
{ binding: bindings.toggleShuffle, handler: () => player.toggleShuffle() },
];
// Filter and map to hotkey items
bindingHandlers.forEach(({ binding, handler }) => {
if (!binding.isGlobal && binding.hotkey && binding.hotkey !== '') {
hotkeyItems.push([binding.hotkey, handler]);
}
});
return hotkeyItems;
}, [bindings, player]);
useHotkeys(playbackHotkeysItems);
};