|
| 1 | +import {empty} from '#sugar'; |
| 2 | + |
1 | 3 | export default {
|
2 |
| - generate() { |
3 |
| - }, |
4 |
| -}; |
| 4 | + extraDependencies: ['html', 'language'], |
| 5 | + |
| 6 | + data: (track) => ({ |
| 7 | + artistNames: |
| 8 | + track.artistContribs |
| 9 | + .map(contrib => contrib.artist.name), |
| 10 | + |
| 11 | + coverArtistNames: |
| 12 | + track.coverArtistContribs |
| 13 | + .map(contrib => contrib.artist.name), |
| 14 | + }), |
5 | 15 |
|
6 |
| -/* |
7 |
| - const getSocialEmbedDescription = ({ |
8 |
| - getArtistString: _getArtistString, |
9 |
| - language, |
10 |
| - }) => { |
11 |
| - const hasArtists = !empty(track.artistContribs); |
12 |
| - const hasCoverArtists = !empty(track.coverArtistContribs); |
13 |
| - const getArtistString = (contribs) => |
14 |
| - _getArtistString(contribs, { |
15 |
| - // We don't want to put actual HTML tags in social embeds (sadly |
16 |
| - // they don't get parsed and displayed, generally speaking), so |
17 |
| - // override the link argument so that artist "links" just show |
18 |
| - // their names. |
19 |
| - link: {artist: (artist) => artist.name}, |
20 |
| - }); |
21 |
| - if (!hasArtists && !hasCoverArtists) return ''; |
22 |
| - return language.formatString( |
23 |
| - 'trackPage.socialEmbed.body' + |
24 |
| - [hasArtists && '.withArtists', hasCoverArtists && '.withCoverArtists'] |
25 |
| - .filter(Boolean) |
26 |
| - .join(''), |
27 |
| - Object.fromEntries( |
28 |
| - [ |
29 |
| - hasArtists && ['artists', getArtistString(track.artistContribs)], |
30 |
| - hasCoverArtists && [ |
31 |
| - 'coverArtists', |
32 |
| - getArtistString(track.coverArtistContribs), |
33 |
| - ], |
34 |
| - ].filter(Boolean) |
35 |
| - ) |
36 |
| - ); |
37 |
| - }; |
38 |
| -*/ |
| 16 | + generate: (data, {html, language}) => |
| 17 | + language.encapsulate('trackPage.socialEmbed.body', baseCapsule => |
| 18 | + language.encapsulate(baseCapsule, workingCapsule => { |
| 19 | + const workingOptions = {}; |
| 20 | + |
| 21 | + if (!empty(data.artistNames)) { |
| 22 | + workingCapsule += '.withArtists'; |
| 23 | + workingOptions.artists = |
| 24 | + language.formatConjunctionList(data.artistNames); |
| 25 | + } |
| 26 | + |
| 27 | + if (!empty(data.coverArtistNames)) { |
| 28 | + workingCapsule += '.withCoverArtists'; |
| 29 | + workingOptions.coverArtists = |
| 30 | + language.formatConjunctionList(data.coverArtistNames); |
| 31 | + } |
| 32 | + |
| 33 | + if (workingCapsule === baseCapsule) { |
| 34 | + return html.blank(); |
| 35 | + } else { |
| 36 | + return language.$(workingCapsule, workingOptions); |
| 37 | + } |
| 38 | + })), |
| 39 | +}; |
0 commit comments