fix mpv seek error on queue end

This commit is contained in:
jeffvli
2026-04-03 19:05:34 -07:00
parent f3a6027e6d
commit 1494c8e044
3 changed files with 22 additions and 11 deletions
@@ -80,7 +80,7 @@ export const useMainPlayerListener = () => {
mpvPlayerListener.rendererStop(() => {
if (!isRadioActive) {
mediaStop();
mediaStop({ reset: false });
}
});
@@ -64,7 +64,7 @@ export interface PlayerContext {
mediaSeekToTimestamp: (timestamp: number) => void;
mediaSkipBackward: () => void;
mediaSkipForward: () => void;
mediaStop: () => void;
mediaStop: (options?: { reset?: boolean }) => void;
mediaToggleMute: () => void;
mediaTogglePlayPause: () => void;
moveSelectedTo: (items: QueueSong[], edge: 'bottom' | 'top', uniqueId: string) => void;
@@ -596,13 +596,17 @@ export const PlayerProvider = ({ children }: { children: React.ReactNode }) => {
storeActions.mediaPrevious();
}, [storeActions]);
const mediaStop = useCallback(() => {
logFn.debug(logMsg[LogCategory.PLAYER].mediaStop, {
category: LogCategory.PLAYER,
});
const mediaStop = useCallback(
(options?: { reset?: boolean }) => {
logFn.debug(logMsg[LogCategory.PLAYER].mediaStop, {
category: LogCategory.PLAYER,
meta: { reset: options?.reset },
});
storeActions.mediaStop();
}, [storeActions]);
storeActions.mediaStop(options);
},
[storeActions],
);
const mediaSeekToTimestamp = useCallback(
(timestamp: number) => {
+10 -3
View File
@@ -59,7 +59,11 @@ interface Actions {
mediaSeekToTimestamp: (timestamp: number) => void;
mediaSkipBackward: (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;
mediaTogglePlayPause: () => void;
moveSelectedTo: (items: QueueSong[], uniqueId: string, edge: 'bottom' | 'top') => void;
@@ -1164,11 +1168,14 @@ export const usePlayerStoreBase = createWithEqualityFn<PlayerState>()(
state.player.seekToTimestamp = uniqueSeekToTimestamp(newTimestamp);
});
},
mediaStop: () => {
mediaStop: (options?: { reset?: boolean }) => {
const reset = options?.reset !== false;
set((state) => {
state.player.status = PlayerStatus.PAUSED;
state.player.seekToTimestamp = uniqueSeekToTimestamp(0);
setTimestampStore(0);
if (reset) {
state.player.seekToTimestamp = uniqueSeekToTimestamp(0);
}
});
},
mediaToggleMute: () => {