fix: refresh stale proxy token on video error

This commit is contained in:
2026-06-27 17:46:01 +02:00
parent 83dd4510df
commit 549f964e8e
3 changed files with 86 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ import { setupQuality, updateQualityOptions } from "./quality";
import { setupSkip, updateSkipButton, updateAutoSkipButton } from "./skip";
import { setupSegmentEditor } from "./skip/editor";
import { resolveActiveSegments, renderSegments } from "./skip/segments";
import { refreshCurrentModeSource } from "./source";
import { state, initState, showEndState, hideEndState } from "./state";
import { safeLocalStorage } from "./storage";
import { setupSubtitles, updateSubtitleOptions, updateSubtitleRender } from "./subtitles";
@@ -280,6 +281,27 @@ const initPlayer = async (): Promise<void> => {
},
{ signal },
);
let sourceRefreshInFlight = false;
state.elements.video.addEventListener(
"error",
() => {
if (sourceRefreshInFlight) {
return;
}
sourceRefreshInFlight = true;
refreshCurrentModeSource(signal)
.catch((error) => {
if (error instanceof DOMException && error.name === "AbortError") {
return;
}
console.error("failed to refresh video source:", error);
})
.finally(() => {
sourceRefreshInFlight = false;
});
},
{ signal },
);
// update progress bar during buffering
state.elements.video.addEventListener(
"progress",