mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
fix mpv seek error on queue end
This commit is contained in:
@@ -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) => {
|
||||
|
||||
@@ -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: () => {
|
||||
|
||||
Reference in New Issue
Block a user