From b68e658e27ae3c6e799342e69dfe3ee45cd53d7b Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Mon, 11 May 2026 21:23:46 -0300 Subject: content, data: Track.excludingURLs --- .../dependencies/generateListenLineOrList.js | 63 +++++++++++++++++----- 1 file changed, 51 insertions(+), 12 deletions(-) (limited to 'src/content') diff --git a/src/content/dependencies/generateListenLineOrList.js b/src/content/dependencies/generateListenLineOrList.js index 0c39a092..558062f9 100644 --- a/src/content/dependencies/generateListenLineOrList.js +++ b/src/content/dependencies/generateListenLineOrList.js @@ -71,7 +71,9 @@ export default { const data = {}; data.name = thing.name; + data.albumName = (thing.album ? thing.album.name : null); + data.excludingLinks = thing.excludingURLs; data.noLinks = empty(query.urls); const artistURLs = @@ -130,16 +132,53 @@ export default { }, generate: (data, relations, slots, {html, language}) => - language.encapsulate('releaseInfo.listenOn', capsule => - (data.noLinks && slots.visibleWithoutLinks - ? language.$(capsule, 'noLinks', { - name: - html.tag('i', data.name), - }) - - : relations.externalLinksLineOrList.slots({ - string: capsule, - context: slots.context, - contexts: data.releaseContexts, - }))), + language.encapsulate('releaseInfo.listenOn', capsule => { + const trackPart = + html.tag('i', data.name); + + const albumPart = + (data.albumName + ? html.tag('i', data.albumName) + : null); + + if (data.excludingLinks) { + const exclude = (name, options) => + (name + ? language.$(capsule, 'excludingLinks', name, options) + : language.$(capsule, 'excludingLinks', options)); + + switch (data.excludingLinks) { + case 'quietly': + return html.blank(); + + case 'not clearly public': + return exclude('notClearlyPublic', { + track: trackPart, + }); + + case 'paid bonus track': + return exclude('paidBonusTrack', { + track: trackPart, + album: albumPart, + }); + + default: + return exclude(null, {track: trackPart}); + } + } + + if (data.noLinks) { + if (slots.visibleWithoutLinks) { + return language.$(capsule, 'noLinks', {track: trackPart}); + } else { + return html.blank(); + } + } + + return relations.externalLinksLineOrList.slots({ + string: capsule, + context: slots.context, + contexts: data.releaseContexts, + }); + }), }; -- cgit 1.3.0-6-gf8a5