This commit is contained in:
2026-10-18 03:11:10 +07:00
parent 8610f45a29
commit 3e2608eae3
23 changed files with 1460 additions and 302 deletions
+4 -4
View File
@@ -112,7 +112,7 @@ export class MediaPlayer {
const spare = this.elements.music.find((media) => media !== active)!
spare.pause()
spare.muted = true
if (next) this.source(spare, next.source.url)
if (next && next.source.ready !== false) this.source(spare, next.source.url)
else this.clear(spare)
}
private async applyChannel(channel: Channel, snapshot: State) {
@@ -124,7 +124,7 @@ export class MediaPlayer {
r.operation = c.operation
const session = snapshot.session
const previousId = r.sourceId
r.sourceId = c.source?.id ?? null
r.sourceId = c.source ? `${c.source.id}:${c.source.url}` : null
if (!c.source) {
if (channel === 'main') {
this.clear(this.elements.audio)
@@ -139,7 +139,7 @@ export class MediaPlayer {
this.clear(c.source.kind === 'audio' ? this.elements.video : this.elements.audio)
} else {
media =
r.media && previousId === c.source.id
r.media && previousId === r.sourceId
? r.media
: this.elements.music.find((element) => element !== r.media)!
if (r.media && r.media !== media) r.media.pause()
@@ -191,7 +191,7 @@ export class MediaPlayer {
throw new Error('Не удалось определить длительность файла')
const position = Math.min(c.position, media.duration)
if (
(c.seekOperation > r.seekOperation || previousId !== c.source.id) &&
(c.seekOperation > r.seekOperation || previousId !== r.sourceId) &&
Math.abs(media.currentTime - position) > 0.01
) {
await waitUntil(