mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-29 17:02:28 +00:00
Clear modal loading poster once playback starts
This commit is contained in:
1 parent
1450e09697
commit
57496969d7
1 file changed
+61
-5
@@ -24,6 +24,7 @@ const UNSUPPORTED_BTITH_MESSAGE =
|
||||
"This magnet link is missing a compatible BitTorrent v1 info hash.";
|
||||
|
||||
const FALLBACK_THUMBNAIL_SRC = "assets/jpg/video-thumbnail-fallback.jpg";
|
||||
const MODAL_LOADING_POSTER = "assets/gif/please-stand-by.gif";
|
||||
|
||||
/**
|
||||
* Basic validation for BitTorrent magnet URIs.
|
||||
@@ -110,12 +111,27 @@ class MediaLoader {
|
||||
"";
|
||||
|
||||
const applyFallback = () => {
|
||||
if (!fallbackSrc) {
|
||||
const resolvedFallback =
|
||||
fallbackSrc && fallbackSrc.trim()
|
||||
? fallbackSrc.trim()
|
||||
: FALLBACK_THUMBNAIL_SRC;
|
||||
|
||||
if (!resolvedFallback) {
|
||||
return;
|
||||
}
|
||||
if (el.src !== fallbackSrc) {
|
||||
el.src = fallbackSrc;
|
||||
|
||||
if (el.src !== resolvedFallback) {
|
||||
el.src = resolvedFallback;
|
||||
}
|
||||
|
||||
if (!el.dataset.fallbackSrc) {
|
||||
el.dataset.fallbackSrc = resolvedFallback;
|
||||
}
|
||||
|
||||
if (!el.getAttribute("data-fallback-src")) {
|
||||
el.setAttribute("data-fallback-src", resolvedFallback);
|
||||
}
|
||||
|
||||
el.dataset.thumbnailFailed = "true";
|
||||
};
|
||||
|
||||
@@ -263,6 +279,7 @@ class bitvidApp {
|
||||
this.creatorNpub = null;
|
||||
this.copyMagnetBtn = null;
|
||||
this.shareBtn = null;
|
||||
this.modalPosterCleanup = null;
|
||||
|
||||
// Hide/Show Subscriptions Link
|
||||
this.subscriptionsLink = null;
|
||||
@@ -562,9 +579,40 @@ class bitvidApp {
|
||||
this.playerModal.style.display = "flex";
|
||||
this.playerModal.classList.remove("hidden");
|
||||
}
|
||||
if (this.modalVideo) {
|
||||
this.modalVideo.poster = "assets/gif/please-stand-by.gif";
|
||||
this.applyModalLoadingPoster();
|
||||
}
|
||||
|
||||
applyModalLoadingPoster() {
|
||||
if (!this.modalVideo) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof this.modalPosterCleanup === "function") {
|
||||
this.modalPosterCleanup();
|
||||
this.modalPosterCleanup = null;
|
||||
}
|
||||
|
||||
const videoEl = this.modalVideo;
|
||||
|
||||
const clearPoster = () => {
|
||||
videoEl.removeEventListener("loadeddata", clearPoster);
|
||||
videoEl.removeEventListener("playing", clearPoster);
|
||||
this.modalPosterCleanup = null;
|
||||
videoEl.poster = "";
|
||||
if (videoEl.hasAttribute("poster")) {
|
||||
videoEl.removeAttribute("poster");
|
||||
}
|
||||
};
|
||||
|
||||
videoEl.addEventListener("loadeddata", clearPoster);
|
||||
videoEl.addEventListener("playing", clearPoster);
|
||||
|
||||
videoEl.poster = MODAL_LOADING_POSTER;
|
||||
|
||||
this.modalPosterCleanup = () => {
|
||||
videoEl.removeEventListener("loadeddata", clearPoster);
|
||||
videoEl.removeEventListener("playing", clearPoster);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1314,6 +1362,14 @@ class bitvidApp {
|
||||
this.playerModal.style.display = "none";
|
||||
this.playerModal.classList.add("hidden");
|
||||
}
|
||||
if (typeof this.modalPosterCleanup === "function") {
|
||||
this.modalPosterCleanup();
|
||||
this.modalPosterCleanup = null;
|
||||
}
|
||||
if (this.modalVideo) {
|
||||
this.modalVideo.poster = "";
|
||||
this.modalVideo.removeAttribute("poster");
|
||||
}
|
||||
this.currentMagnetUri = null;
|
||||
|
||||
// 3) Remove only `?v=` but **keep** the hash
|
||||
|
||||
Reference in new issue
Block a user