« 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: c8b123fef132f1f3c2e6ecf04b4f8a6236529a5e (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
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.directory;
      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}) {
    return relations.socialEmbed.slots({
      title:
        language.$('albumPage.socialEmbed.title', {
          album: data.albumName,
        }),

      description: relations.description,

      headingContent:
        (data.hasHeading
          ? language.$('albumPage.socialEmbed.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),
    });
  },
};