« get me outta code hell

generateAlbumSocialEmbed.js « dependencies « content « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateAlbumSocialEmbed.js
blob: 699b3d265065675e331346efe4fef62a7a1ab8eb (plain)
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
export default {
  contentDependencies: [
    'generateSocialEmbedDescription',
  ],

  extraDependencies: [
    'absoluteTo',
    'language',
    'to',
    'urls',
  ],

  data(album, {
    generateSocialEmbedDescription,
  }) {
    const data = {};

    data.descriptionData = generateSocialEmbedDescription.data(album);

    data.hasHeading = !empty(album.groups);

    if (data.hasHeading) {
      const firstGroup = album.groups[0];
      data.headingGroupName = firstGroup.directory;
      data.headingGroupDirectory = firstGroup.directory;
    }

    data.albumName = album.name;
    data.albumColor = album.color;

    return data;
  },

  generate(data, {
    generateSocialEmbedDescription,

    absoluteTo,
    language,
    to,
    urls,
  }) {
    const socialEmbed = {};

    if (data.hasHeading) {
      socialEmbed.heading =
        language.$('albumPage.socialEmbed.heading', {
          group: data.headingGroupName,
        });

      socialEmbed.headingLink =
        absoluteTo('localized.album', data.headingGroupDirectory);
    } else {
      socialEmbed.heading = '';
      socialEmbed.headingLink = null;
    }

    socialEmbed.title =
      language.$('albumPage.socialEmbed.title', {
        album: data.albumName,
      });

    socialEmbed.description = generateSocialEmbedDescription(data.descriptionData);

    socialEmbed.image =
      '/' + getAlbumCover(album, {to: urls.from('shared.root').to});

    socialEmbed.color = data.albumColor;

    return socialEmbed;
  },
};