From 68d3e042dc0f447f9e3e6b8c55a43d83751a1c62 Mon Sep 17 00:00:00 2001 From: kdeterme Date: Mon, 17 Aug 2026 11:14:05 +0200 Subject: [PATCH] fix(controls): fix ReferenceError hdBtn and preserve query params in cache busting url --- .../static/controls/controls_detail.js | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/loko/controls/static/controls/controls_detail.js b/loko/controls/static/controls/controls_detail.js index 57e01ee..271ef30 100644 --- a/loko/controls/static/controls/controls_detail.js +++ b/loko/controls/static/controls/controls_detail.js @@ -2094,6 +2094,18 @@ function updateRemarkCarouselActiveSlide(idx) { } } +function addTimestampToUrl(url) { + if (!url) return url; + try { + const u = new URL(url, window.location.origin); + u.searchParams.set('t', Date.now().toString()); + return u.pathname + u.search + u.hash; + } catch (e) { + const sep = url.includes('?') ? '&' : '?'; + return url.replace(/([&?]t=\d+)/, '') + sep + 't=' + Date.now(); + } +} + async function rotateRemarkImage(imageId, triggerBtn) { if (!imageId) return; @@ -2117,26 +2129,20 @@ async function rotateRemarkImage(imageId, triggerBtn) { }); const data = await response.json(); if (data.success) { - const timestamp = Date.now(); - // RafraƮchir l'image active dans le carrousel si ouvert const activeCarouselImg = document.querySelector('#remark-carousel-inner .carousel-item.active img'); if (activeCarouselImg) { - const cleanUrl = activeCarouselImg.src.split('?')[0]; - activeCarouselImg.src = `${cleanUrl}?t=${timestamp}`; + activeCarouselImg.src = addTimestampToUrl(activeCarouselImg.src); } // RafraƮchir toutes les vignettes et attributs data correspondants sur la page document.querySelectorAll(`img[data-image-id="${imageId}"]`).forEach(img => { - const cleanThumb = img.src.split('?')[0]; - img.src = `${cleanThumb}?t=${timestamp}`; + img.src = addTimestampToUrl(img.src); if (img.dataset.fullUrl) { - const cleanFull = img.dataset.fullUrl.split('?')[0]; - img.dataset.fullUrl = `${cleanFull}?t=${timestamp}`; + img.dataset.fullUrl = addTimestampToUrl(img.dataset.fullUrl); } if (img.dataset.thumbUrl) { - const cleanThumbData = img.dataset.thumbUrl.split('?')[0]; - img.dataset.thumbUrl = `${cleanThumbData}?t=${timestamp}`; + img.dataset.thumbUrl = addTimestampToUrl(img.dataset.thumbUrl); } }); @@ -2144,8 +2150,9 @@ async function rotateRemarkImage(imageId, triggerBtn) { if (currentRemarkCarouselPhotos && currentRemarkCarouselPhotos[currentRemarkCarouselIndex]) { const curr = currentRemarkCarouselPhotos[currentRemarkCarouselIndex]; if (curr.imageId == imageId) { - curr.fullUrl = curr.fullUrl.split('?')[0] + `?t=${timestamp}`; - curr.thumbUrl = curr.thumbUrl.split('?')[0] + `?t=${timestamp}`; + curr.fullUrl = addTimestampToUrl(curr.fullUrl); + curr.thumbUrl = addTimestampToUrl(curr.thumbUrl); + const hdBtn = document.getElementById('remark-carousel-hd-btn'); if (hdBtn) hdBtn.href = curr.fullUrl; } }