1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
import {empty} from '#sugar';
export default {
contentDependencies: [
'generateSocialEmbed',
'generateAlbumSocialEmbedDescription',
],
extraDependencies: ['absoluteTo', 'language', 'urls'],
relations(relation, album) {
return {
socialEmbed:
relation('generateSocialEmbed'),
description:
relation('generateAlbumSocialEmbedDescription', album),
};
},
data(album) {
const data = {};
data.hasHeading = !empty(album.groups);
if (data.hasHeading) {
const firstGroup = album.groups[0];
data.headingGroupName = firstGroup.name;
data.headingGroupDirectory = firstGroup.directory;
}
data.hasImage = album.hasCoverArt;
if (data.hasImage) {
data.coverArtDirectory = album.directory;
data.coverArtFileExtension = album.coverArtFileExtension;
}
data.albumName = album.name;
return data;
},
generate: (data, relations, {absoluteTo, language, urls}) =>
language.encapsulate('albumPage.socialEmbed', embedCapsule =>
relations.socialEmbed.slots({
title:
language.$(embedCapsule, 'title', {
album: data.albumName,
}),
description: relations.description,
headingContent:
(data.hasHeading
? language.$(embedCapsule, 'heading', {
group: data.headingGroupName,
})
: null),
headingLink:
(data.hasHeading
? absoluteTo('localized.groupGallery', data.headingGroupDirectory)
: null),
imagePath:
(data.hasImage
? '/' +
urls
.from('shared.root')
.to('media.albumCover', data.coverArtDirectory, data.coverArtFileExtension)
: null),
})),
};
|