diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-05-11 21:23:46 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-05-11 21:23:46 -0300 |
| commit | b68e658e27ae3c6e799342e69dfe3ee45cd53d7b (patch) | |
| tree | 86f176400b4974df10f59989b6f3bc6b5ee3926e /src/content | |
| parent | eec8c7dfed1bf98607d94160a735132f98b13270 (diff) | |
content, data: Track.excludingURLs preview
Diffstat (limited to 'src/content')
| -rw-r--r-- | src/content/dependencies/generateListenLineOrList.js | 63 |
1 files changed, 51 insertions, 12 deletions
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, + }); + }), }; |