mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-11-12 16:46:07 -08:00
fix(anime): keep browser state in sync and alias HLS segments
- Toggle the player Anime Browser without losing its state - Share active playback state and support rotating fake segment extensions
This commit is contained in:
34 files changed
+612
-43
No files matched your search
@@ -0,0 +1,51 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { nextPlaybackCue, playingEpisodeForAnime } from './episode-playback';
|
||||
|
||||
const selected = { sourceId: 'source.one', url: '/anime/one', title: 'One' };
|
||||
|
||||
test('playing episode sync applies only to the matching source and anime', () => {
|
||||
assert.equal(
|
||||
playingEpisodeForAnime(
|
||||
{ sourceId: 'source.one', animeUrl: '/anime/one', episodeUrl: '/episode/3' },
|
||||
selected,
|
||||
),
|
||||
'/episode/3',
|
||||
);
|
||||
assert.equal(
|
||||
playingEpisodeForAnime(
|
||||
{ sourceId: 'source.two', animeUrl: '/anime/one', episodeUrl: '/episode/3' },
|
||||
selected,
|
||||
),
|
||||
null,
|
||||
);
|
||||
assert.equal(
|
||||
playingEpisodeForAnime(
|
||||
{ sourceId: 'source.one', animeUrl: '/anime/two', episodeUrl: '/episode/3' },
|
||||
selected,
|
||||
),
|
||||
null,
|
||||
);
|
||||
assert.equal(playingEpisodeForAnime(null, selected), null);
|
||||
});
|
||||
|
||||
test('live playback sync preserves a pending episode cue until resolution finishes', () => {
|
||||
const loading = { url: '/episode/4', state: 'loading' as const };
|
||||
|
||||
assert.equal(
|
||||
nextPlaybackCue(
|
||||
{ sourceId: 'source.one', animeUrl: '/anime/one', episodeUrl: '/episode/3' },
|
||||
selected,
|
||||
loading,
|
||||
),
|
||||
loading,
|
||||
);
|
||||
assert.deepEqual(
|
||||
nextPlaybackCue(
|
||||
{ sourceId: 'source.one', animeUrl: '/anime/one', episodeUrl: '/episode/3' },
|
||||
selected,
|
||||
{ url: '/episode/2', state: 'playing' },
|
||||
),
|
||||
{ url: '/episode/3', state: 'playing' },
|
||||
);
|
||||
});
|
||||
Reference in new issue
Block a user