diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-03-18 20:15:37 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-03-18 20:15:37 -0300 |
commit | c6e1a0b6fb9314186a46cf1352a8685e8aa5fe8d (patch) | |
tree | 54d9ba89a99882d635c5504262eccf31fc8f2147 /src/content/dependencies/generateAlbumSocialEmbedDescription.js | |
parent | 4f0d935f1dec0cece23ac661b02486f095b5ee94 (diff) |
data steps: experimental live JS reload infrastructure
Diffstat (limited to 'src/content/dependencies/generateAlbumSocialEmbedDescription.js')
-rw-r--r-- | src/content/dependencies/generateAlbumSocialEmbedDescription.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/content/dependencies/generateAlbumSocialEmbedDescription.js b/src/content/dependencies/generateAlbumSocialEmbedDescription.js new file mode 100644 index 00000000..2bb62596 --- /dev/null +++ b/src/content/dependencies/generateAlbumSocialEmbedDescription.js @@ -0,0 +1,48 @@ +export default { + extraDependencies: ['language'], + + data(album) { + const data = {}; + + const duration = getTotalDuration(album); + + data.hasDuration = duration > 0; + data.hasTracks = album.tracks.length > 0; + data.hasDate = !!album.date; + data.hasAny = (data.hasDuration || data.hasTracks || data.hasDuration); + + if (!data.hasAny) + return data; + + if (data.hasDuration) + data.duration = duration; + + if (data.hasTracks) + data.tracks = album.tracks.length; + + if (data.hasDate) + data.date = album.date; + + return data; + }, + + generate(data, { + language, + }) { + return language.formatString( + 'albumPage.socialEmbed.body' + [ + data.hasDuration && '.withDuration', + data.hasTracks && '.withTracks', + data.hasDate && '.withReleaseDate', + ].filter(Boolean).join(''), + + Object.fromEntries([ + data.hasDuration && + ['duration', language.formatDuration(data.duration)], + data.hasTracks && + ['tracks', language.countTracks(data.tracks, {unit: true})], + data.hasDate && + ['date', language.formatDate(data.date)], + ].filter(Boolean))); + }, +}; |