mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
readd mpv reload handler
This commit is contained in:
@@ -10,6 +10,7 @@ export type EventMap = {
|
||||
ITEM_LIST_UPDATE_ITEM: ItemListUpdateItemEventPayload;
|
||||
MEDIA_NEXT: MediaNextEventPayload;
|
||||
MEDIA_PREV: MediaPrevEventPayload;
|
||||
MPV_RELOAD: MpvReloadEventPayload;
|
||||
PLAYER_PLAY: PlayerPlayEventPayload;
|
||||
PLAYER_REPEATED: PlayerRepeatedEventPayload;
|
||||
PLAYLIST_MOVE_DOWN: PlaylistMoveEventPayload;
|
||||
@@ -42,6 +43,8 @@ export type MediaPrevEventPayload = {
|
||||
prevIndex: number;
|
||||
};
|
||||
|
||||
export type MpvReloadEventPayload = Record<string, never>;
|
||||
|
||||
export type PlayerPlayEventPayload = {
|
||||
id: string;
|
||||
index: number;
|
||||
|
||||
@@ -3,6 +3,7 @@ import type { RefObject } from 'react';
|
||||
import isElectron from 'is-electron';
|
||||
import { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
||||
|
||||
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
||||
import { usePlayerEvents } from '/@/renderer/features/player/audio-player/hooks/use-player-events';
|
||||
import { getSongUrl } from '/@/renderer/features/player/audio-player/hooks/use-stream-url';
|
||||
import { AudioPlayer, PlayerOnProgressProps } from '/@/renderer/features/player/audio-player/types';
|
||||
@@ -58,6 +59,19 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
||||
const { transcode } = usePlaybackSettings();
|
||||
const mpvExtraParameters = useSettingsStore((store) => store.playback.mpvExtraParameters);
|
||||
const mpvProperties = useSettingsStore((store) => store.playback.mpvProperties);
|
||||
const [reloadTrigger, setReloadTrigger] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
const handleMpvReload = () => {
|
||||
setReloadTrigger((prev) => prev + 1);
|
||||
};
|
||||
|
||||
eventEmitter.on('MPV_RELOAD', handleMpvReload);
|
||||
|
||||
return () => {
|
||||
eventEmitter.off('MPV_RELOAD', handleMpvReload);
|
||||
};
|
||||
}, []);
|
||||
|
||||
// Start the mpv instance on startup
|
||||
useEffect(() => {
|
||||
@@ -132,8 +146,9 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
||||
// Volume and speed changes are handled by separate useEffects below to avoid
|
||||
// reinitializing the entire player. Transcode changes are handled by queue
|
||||
// update callbacks in usePlayerEvents.
|
||||
// reloadTrigger is included to allow manual reload via MPV_RELOAD event.
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [mpvExtraParameters, mpvProperties]);
|
||||
}, [mpvExtraParameters, mpvProperties, reloadTrigger]);
|
||||
|
||||
// Update volume
|
||||
useEffect(() => {
|
||||
|
||||
@@ -2,6 +2,8 @@ import isElectron from 'is-electron';
|
||||
import { memo, useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
||||
import { usePlayer } from '/@/renderer/features/player/context/player-context';
|
||||
import {
|
||||
SettingOption,
|
||||
SettingsSection,
|
||||
@@ -125,21 +127,12 @@ export const MpvSettings = memo(() => {
|
||||
mpvPlayer?.setProperties(mpvSetting);
|
||||
};
|
||||
|
||||
// const handleReloadMpv = () => {
|
||||
// pause();
|
||||
// clearQueue();
|
||||
const player = usePlayer();
|
||||
|
||||
// const extraParameters = useSettingsStore.getState().playback.mpvExtraParameters;
|
||||
// const properties: Record<string, any> = {
|
||||
// speed: usePlayerStore.getState().speed,
|
||||
// ...getMpvProperties(useSettingsStore.getState().playback.mpvProperties),
|
||||
// };
|
||||
// mpvPlayer?.restart({
|
||||
// binaryPath: mpvPath || undefined,
|
||||
// extraParameters,
|
||||
// properties,
|
||||
// });
|
||||
// };
|
||||
const handleReloadMpv = () => {
|
||||
player.mediaStop();
|
||||
eventEmitter.emit('MPV_RELOAD', {});
|
||||
};
|
||||
|
||||
const handleSetExtraParameters = (data: string[]) => {
|
||||
setSettings({
|
||||
@@ -155,7 +148,7 @@ export const MpvSettings = memo(() => {
|
||||
<Group gap="sm">
|
||||
<ActionIcon
|
||||
icon="refresh"
|
||||
// onClick={handleReloadMpv}
|
||||
onClick={handleReloadMpv}
|
||||
tooltip={{
|
||||
label: t('common.reload', { postProcess: 'titleCase' }),
|
||||
openDelay: 0,
|
||||
|
||||
Reference in New Issue
Block a user