mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
Handle channel banner load failures
This commit is contained in:
1 parent
6ba44dd2d1
commit
7594902f0b
2 files changed
+39
-4
No files matched your search
+39
-3
@@ -164,9 +164,6 @@ function preloadBannerImage(url) {
|
||||
if ("referrerPolicy" in img && !img.referrerPolicy) {
|
||||
img.referrerPolicy = "no-referrer";
|
||||
}
|
||||
if ("crossOrigin" in img && !img.crossOrigin) {
|
||||
img.crossOrigin = "anonymous";
|
||||
}
|
||||
img.onload = () => {
|
||||
resolve(url);
|
||||
};
|
||||
@@ -207,6 +204,43 @@ function setBannerVisual(el, url) {
|
||||
}
|
||||
}
|
||||
|
||||
function ensureBannerFallbackHandler(bannerEl) {
|
||||
if (!bannerEl) {
|
||||
return;
|
||||
}
|
||||
|
||||
const tagName = bannerEl.tagName ? bannerEl.tagName.toLowerCase() : "";
|
||||
if (tagName !== "img") {
|
||||
return;
|
||||
}
|
||||
|
||||
if (bannerEl.dataset.bannerFallbackAttached === "true") {
|
||||
return;
|
||||
}
|
||||
|
||||
const handleError = () => {
|
||||
const fallbackAttr =
|
||||
(typeof bannerEl.dataset?.fallbackSrc === "string"
|
||||
? bannerEl.dataset.fallbackSrc.trim()
|
||||
: "") ||
|
||||
bannerEl.getAttribute("data-fallback-src") ||
|
||||
"";
|
||||
const fallbackSrc = fallbackAttr || FALLBACK_CHANNEL_BANNER;
|
||||
|
||||
const activeSrc = bannerEl.currentSrc || bannerEl.src || "";
|
||||
if (activeSrc) {
|
||||
channelBannerImageCache.delete(activeSrc);
|
||||
}
|
||||
|
||||
if (fallbackSrc && bannerEl.src !== fallbackSrc) {
|
||||
bannerEl.src = fallbackSrc;
|
||||
}
|
||||
};
|
||||
|
||||
bannerEl.addEventListener("error", handleError, { passive: true });
|
||||
bannerEl.dataset.bannerFallbackAttached = "true";
|
||||
}
|
||||
|
||||
function getChannelZapButton() {
|
||||
if (cachedZapButton && !document.body.contains(cachedZapButton)) {
|
||||
cachedZapButton = null;
|
||||
@@ -2843,6 +2877,8 @@ function applyChannelProfileMetadata({
|
||||
bannerEl.setAttribute("data-fallback-src", fallbackSrc);
|
||||
}
|
||||
|
||||
ensureBannerFallbackHandler(bannerEl);
|
||||
|
||||
if (!normalized.banner) {
|
||||
setBannerVisual(bannerEl, fallbackSrc);
|
||||
} else {
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
alt="Banner"
|
||||
loading="lazy"
|
||||
referrerpolicy="no-referrer"
|
||||
crossorigin="anonymous"
|
||||
data-fallback-src="assets/jpg/bitvid.jpg"
|
||||
/>
|
||||
<div class="absolute inset-0 rounded-lg bg-black bg-opacity-50"></div>
|
||||
|
||||
Reference in new issue
Block a user