« get me outta code hell

client: defend client-side code against images without thumbs - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-09-04 20:52:28 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-09-04 20:55:54 -0300
commit63d9b8c2d455e2f74a837d8772fcfcf8e38e3a3e (patch)
tree58051a858b37c3ba96d8e0eeda9b6947e43870b6
parent669f435f2b86133a8e096b22371ff9fbb1b703b7 (diff)
client: defend client-side code against images without thumbs
-rw-r--r--src/static/client2.js36
1 files changed, 25 insertions, 11 deletions
diff --git a/src/static/client2.js b/src/static/client2.js
index 0a8eb860..8ae9876e 100644
--- a/src/static/client2.js
+++ b/src/static/client2.js
@@ -717,18 +717,32 @@ function handleImageLinkClicked(evt) {
 
   updateFileSizeInformation(originalFileSize);
 
-  const {thumb: mainThumb, length: mainLength} = getPreferredThumbSize(availableThumbList);
-  const {thumb: smallThumb, length: smallLength} = getSmallestThumbSize(availableThumbList);
-
-  const mainSrc = originalSrc.replace(/\.(jpg|png)$/, `.${mainThumb}.jpg`);
-  const thumbSrc = originalSrc.replace(/\.(jpg|png)$/, `.${smallThumb}.jpg`);
-
-  thumbImage.src = thumbSrc;
+  let mainSrc = null;
+  let thumbSrc = null;
+
+  if (availableThumbList) {
+    const {thumb: mainThumb, length: mainLength} = getPreferredThumbSize(availableThumbList);
+    const {thumb: smallThumb, length: smallLength} = getSmallestThumbSize(availableThumbList);
+    mainSrc = originalSrc.replace(/\.(jpg|png)$/, `.${mainThumb}.jpg`);
+    thumbSrc = originalSrc.replace(/\.(jpg|png)$/, `.${smallThumb}.jpg`);
+    // Show the thumbnail size on each <img> element's data attributes.
+    // Y'know, just for debugging convenience.
+    mainImage.dataset.displayingThumb = `${mainThumb}:${mainLength}`;
+    thumbImage.dataset.displayingThumb = `${smallThumb}:${smallLength}`;
+  } else {
+    mainSrc = originalSrc;
+    thumbSrc = null;
+    mainImage.dataset.displayingThumb = '';
+    thumbImage.dataset.displayingThumb = '';
+  }
 
-  // Show the thumbnail size on each <img> element's data attributes.
-  // Y'know, just for debugging convenience.
-  mainImage.dataset.displayingThumb = `${mainThumb}:${mainLength}`;
-  thumbImage.dataset.displayingThumb = `${smallThumb}:${smallLength}`;
+  if (thumbSrc) {
+    thumbImage.src = thumbSrc;
+    thumbImage.style.display = null;
+  } else {
+    thumbImage.src = '';
+    thumbImage.style.display = 'none';
+  }
 
   for (const viewOriginal of allViewOriginal) {
     viewOriginal.href = originalSrc;