feat(ui): load request covers through the local cache

This commit is contained in:
Steppenstreuner committed 2026-10-25 20:32:48 +01:00
1 parent 98c7214140
commit 173e24a362
1 file changed
+7 -2
+7 -2
View File
@@ -81,6 +81,11 @@ function libOptions(mediaType) {
.join(""); .join("");
} }
// the server keeps a copy; the url in the query makes a changed cover a new address
function coverSrc(r) {
return `/api/requests/${r.id}/cover?u=${encodeURIComponent(r.cover_url)}`;
}
// ---- missing badge ---- // ---- missing badge ----
async function refreshMissingBadge() { async function refreshMissingBadge() {
try { try {
@@ -609,7 +614,7 @@ function renderRequests(status) {
box.innerHTML = reqs box.innerHTML = reqs
.map( .map(
(r) => `<div class="card clickable" data-detail="${r.id}" tabindex="0"> (r) => `<div class="card clickable" data-detail="${r.id}" tabindex="0">
${r.cover_url ? `<img src="${esc(r.cover_url)}" alt="" loading="lazy">` : '<div class="nocover">?</div>'} ${r.cover_url ? `<img src="${esc(coverSrc(r))}" alt="" loading="lazy">` : '<div class="nocover">?</div>'}
<div class="card-body"> <div class="card-body">
<strong>${esc(r.title)}${r.volume != null ? ` · ${t("common.volume")} ${r.volume}` : ""}</strong> <strong>${esc(r.title)}${r.volume != null ? ` · ${t("common.volume")} ${r.volume}` : ""}</strong>
<span>${esc(r.authors)}</span> <span>${esc(r.authors)}</span>
@@ -888,7 +893,7 @@ function openDetail(id, status) {
const img = $("#detail-cover"); const img = $("#detail-cover");
img.hidden = !r.cover_url; img.hidden = !r.cover_url;
$("#detail-nocover").hidden = !!r.cover_url; $("#detail-nocover").hidden = !!r.cover_url;
if (r.cover_url) img.src = r.cover_url; if (r.cover_url) img.src = coverSrc(r);
$("#detail-retag").hidden = !(r.status === "imported" && r.media_type === "audiobook"); $("#detail-retag").hidden = !(r.status === "imported" && r.media_type === "audiobook");
$("#detail-relocate").hidden = r.status !== "imported"; $("#detail-relocate").hidden = r.status !== "imported";
$("#detail-dialog").showModal(); $("#detail-dialog").showModal();