mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
fix(core): sync playback feature state on seeked event (#1000)
This commit is contained in:
@@ -37,5 +37,6 @@ export const playbackFeature = definePlayerFeature({
|
||||
listen(media, 'ended', sync, { signal });
|
||||
listen(media, 'playing', sync, { signal });
|
||||
listen(media, 'waiting', sync, { signal });
|
||||
listen(media, 'seeked', sync, { signal });
|
||||
},
|
||||
});
|
||||
|
||||
@@ -104,6 +104,21 @@ describe('playbackFeature', () => {
|
||||
expect(store.state.ended).toBe(true);
|
||||
});
|
||||
|
||||
it('clears ended state on seeked event', () => {
|
||||
const video = createMockVideo({ ended: true });
|
||||
|
||||
const store = createStore<PlayerTarget>()(playbackFeature);
|
||||
store.attach({ media: video, container: null });
|
||||
|
||||
expect(store.state.ended).toBe(true);
|
||||
|
||||
// Simulate seeking: browser clears ended when user seeks
|
||||
Object.defineProperty(video, 'ended', { value: false, writable: false, configurable: true });
|
||||
video.dispatchEvent(new Event('seeked'));
|
||||
|
||||
expect(store.state.ended).toBe(false);
|
||||
});
|
||||
|
||||
it('stops listening when store is destroyed', () => {
|
||||
const video = createMockVideo({});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user