mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
fix mpv seek error on queue end
This commit is contained in:
@@ -80,7 +80,7 @@ export const useMainPlayerListener = () => {
|
|||||||
|
|
||||||
mpvPlayerListener.rendererStop(() => {
|
mpvPlayerListener.rendererStop(() => {
|
||||||
if (!isRadioActive) {
|
if (!isRadioActive) {
|
||||||
mediaStop();
|
mediaStop({ reset: false });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ export interface PlayerContext {
|
|||||||
mediaSeekToTimestamp: (timestamp: number) => void;
|
mediaSeekToTimestamp: (timestamp: number) => void;
|
||||||
mediaSkipBackward: () => void;
|
mediaSkipBackward: () => void;
|
||||||
mediaSkipForward: () => void;
|
mediaSkipForward: () => void;
|
||||||
mediaStop: () => void;
|
mediaStop: (options?: { reset?: boolean }) => void;
|
||||||
mediaToggleMute: () => void;
|
mediaToggleMute: () => void;
|
||||||
mediaTogglePlayPause: () => void;
|
mediaTogglePlayPause: () => void;
|
||||||
moveSelectedTo: (items: QueueSong[], edge: 'bottom' | 'top', uniqueId: string) => void;
|
moveSelectedTo: (items: QueueSong[], edge: 'bottom' | 'top', uniqueId: string) => void;
|
||||||
@@ -596,13 +596,17 @@ export const PlayerProvider = ({ children }: { children: React.ReactNode }) => {
|
|||||||
storeActions.mediaPrevious();
|
storeActions.mediaPrevious();
|
||||||
}, [storeActions]);
|
}, [storeActions]);
|
||||||
|
|
||||||
const mediaStop = useCallback(() => {
|
const mediaStop = useCallback(
|
||||||
logFn.debug(logMsg[LogCategory.PLAYER].mediaStop, {
|
(options?: { reset?: boolean }) => {
|
||||||
category: LogCategory.PLAYER,
|
logFn.debug(logMsg[LogCategory.PLAYER].mediaStop, {
|
||||||
});
|
category: LogCategory.PLAYER,
|
||||||
|
meta: { reset: options?.reset },
|
||||||
|
});
|
||||||
|
|
||||||
storeActions.mediaStop();
|
storeActions.mediaStop(options);
|
||||||
}, [storeActions]);
|
},
|
||||||
|
[storeActions],
|
||||||
|
);
|
||||||
|
|
||||||
const mediaSeekToTimestamp = useCallback(
|
const mediaSeekToTimestamp = useCallback(
|
||||||
(timestamp: number) => {
|
(timestamp: number) => {
|
||||||
|
|||||||
@@ -59,7 +59,11 @@ interface Actions {
|
|||||||
mediaSeekToTimestamp: (timestamp: number) => void;
|
mediaSeekToTimestamp: (timestamp: number) => void;
|
||||||
mediaSkipBackward: (offset?: number) => void;
|
mediaSkipBackward: (offset?: number) => void;
|
||||||
mediaSkipForward: (offset?: number) => void;
|
mediaSkipForward: (offset?: number) => void;
|
||||||
mediaStop: () => void;
|
/**
|
||||||
|
* @param options.reset - When true (default), sets seekToTimestamp(0) so the engine seeks to start.
|
||||||
|
* Timestamp display is always cleared to 0. Use false when the engine is already idle (e.g. mpv `stopped`) to skip that seek.
|
||||||
|
*/
|
||||||
|
mediaStop: (options?: { reset?: boolean }) => void;
|
||||||
mediaToggleMute: () => void;
|
mediaToggleMute: () => void;
|
||||||
mediaTogglePlayPause: () => void;
|
mediaTogglePlayPause: () => void;
|
||||||
moveSelectedTo: (items: QueueSong[], uniqueId: string, edge: 'bottom' | 'top') => void;
|
moveSelectedTo: (items: QueueSong[], uniqueId: string, edge: 'bottom' | 'top') => void;
|
||||||
@@ -1164,11 +1168,14 @@ export const usePlayerStoreBase = createWithEqualityFn<PlayerState>()(
|
|||||||
state.player.seekToTimestamp = uniqueSeekToTimestamp(newTimestamp);
|
state.player.seekToTimestamp = uniqueSeekToTimestamp(newTimestamp);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
mediaStop: () => {
|
mediaStop: (options?: { reset?: boolean }) => {
|
||||||
|
const reset = options?.reset !== false;
|
||||||
set((state) => {
|
set((state) => {
|
||||||
state.player.status = PlayerStatus.PAUSED;
|
state.player.status = PlayerStatus.PAUSED;
|
||||||
state.player.seekToTimestamp = uniqueSeekToTimestamp(0);
|
|
||||||
setTimestampStore(0);
|
setTimestampStore(0);
|
||||||
|
if (reset) {
|
||||||
|
state.player.seekToTimestamp = uniqueSeekToTimestamp(0);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
mediaToggleMute: () => {
|
mediaToggleMute: () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user