Skip to content

Commit 2da0d55

Browse files
committed
content: generateTrackSocialEmbedDescription: implement this
Geez
1 parent f198626 commit 2da0d55

File tree

2 files changed

+40
-51
lines changed

2 files changed

+40
-51
lines changed

src/content/dependencies/generateTrackSocialEmbed.js

+3-15
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ export default {
4747
track: data.trackName,
4848
}),
4949

50+
description:
51+
relations.description,
52+
5053
headingContent:
5154
language.$(embedCapsule, 'heading', {
5255
album: data.albumName,
@@ -69,18 +72,3 @@ export default {
6972
: null),
7073
})),
7174
};
72-
73-
/*
74-
socialEmbed: {
75-
heading: language.$('trackPage.socialEmbed.heading', {
76-
album: track.album.name,
77-
}),
78-
headingLink: absoluteTo('localized.album', album.directory),
79-
title: language.$('trackPage.socialEmbed.title', {
80-
track: track.name,
81-
}),
82-
description: getSocialEmbedDescription({getArtistString, language}),
83-
image: '/' + getTrackCover(track, {to: urls.from('shared.root').to}),
84-
color: track.color,
85-
},
86-
*/
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,39 @@
1+
import {empty} from '#sugar';
2+
13
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+
}),
515

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

Comments
 (0)