« get me outta code hell

content, language: guard formatExternalLink, related upd7 - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-05-23 21:11:55 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-05-23 21:11:55 -0300
commit29c7928e45ccf7ba936b27bc795867dc66d1d491 (patch)
treefa5db4e57a67855bca75190279a26681b955738c /src
parente11711bfe7f37190d082198a57862d700074f36d (diff)
content, language: guard formatExternalLink, related upd7
Diffstat (limited to 'src')
-rw-r--r--src/content/dependencies/transformContent.js5
-rw-r--r--src/data/things/Language.js38
2 files changed, 29 insertions, 14 deletions
diff --git a/src/content/dependencies/transformContent.js b/src/content/dependencies/transformContent.js
index 62a547e4..b2d878ac 100644
--- a/src/content/dependencies/transformContent.js
+++ b/src/content/dependencies/transformContent.js
@@ -465,13 +465,10 @@ export default {
                     {title:
                       language.encapsulate('misc.external.opensInNewTab', capsule =>
                         language.$(capsule, {
-                          link:
+                          platform:
                             language.formatExternalLink(link, {
                               style: 'platform',
                             }),
-
-                          annotation:
-                            language.$(capsule, 'annotation'),
                         }).toString())},
 
                     content);
diff --git a/src/data/things/Language.js b/src/data/things/Language.js
index f51894f1..8b8c78b7 100644
--- a/src/data/things/Language.js
+++ b/src/data/things/Language.js
@@ -732,31 +732,49 @@ export class Language extends Thing {
       : duration;
   }
 
-  formatExternalLink(url, {
+  formatExternalLink(urlEntry, {
     style = 'platform',
     context = 'generic',
   } = {}) {
     // Null or undefined url is blank content.
-    if (url === null || url === undefined) {
+    if (urlEntry === null || urlEntry === undefined) {
       return html.blank();
     }
 
+    // String means we're probably receiving a URL, not a URL entry.
+    // Just fill in blanks like from a mock/dummy entry.
+    if (typeof urlEntry === 'string') {
+      return this.formatExternalLink(
+        {
+          url: urlEntry,
+          annotation: null,
+        },
+        {style, context});
+    }
+
     isExternalLinkContext(context);
 
     if (style === 'all') {
-      return getExternalLinkStringsFromDescriptors(url, externalLinkSpec, {
-        language: this,
-        context,
-      });
+      return getExternalLinkStringsFromDescriptors(
+        urlEntry,
+        externalLinkSpec,
+        {
+          language: this,
+          context,
+        });
     }
 
     isExternalLinkStyle(style);
 
     const result =
-      getExternalLinkStringOfStyleFromDescriptors(url, style, externalLinkSpec, {
-        language: this,
-        context,
-      });
+      getExternalLinkStringOfStyleFromDescriptors(
+        urlEntry,
+        style,
+        externalLinkSpec,
+        {
+          language: this,
+          context,
+        });
 
     // It's possible for there to not actually be any string available for the
     // given URL, style, and context, and we want this to be detectable via