diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-07-25 04:51:39 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-07-25 04:51:39 -0300 |
commit | 56a4dd53cd13a53a85a740cdeb4acdcb1b68c258 (patch) | |
tree | 752d12263ef5d30dd290b3c2eb63c9ca6b58efa1 /src/content/dependencies | |
parent | 39dfd7bb398adf3c6e4aee6a5bc56fff2098a24c (diff) |
content: gGPAlbumGridTab: query.mode
Diffstat (limited to 'src/content/dependencies')
-rw-r--r-- | src/content/dependencies/generateGroupGalleryPageAlbumGridTab.js | 64 |
1 files changed, 39 insertions, 25 deletions
diff --git a/src/content/dependencies/generateGroupGalleryPageAlbumGridTab.js b/src/content/dependencies/generateGroupGalleryPageAlbumGridTab.js index 597c5227..018911dd 100644 --- a/src/content/dependencies/generateGroupGalleryPageAlbumGridTab.js +++ b/src/content/dependencies/generateGroupGalleryPageAlbumGridTab.js @@ -5,50 +5,64 @@ export default { extraDependencies: ['language'], query(album, group) { - const query = {}; - - const contextGroup = group; - - const candidateGroups = - album.groups - .filter(group => !group.excludeFromGalleryTabs) - .filter(group => group.category !== contextGroup.category); - - query.notedGroup = candidateGroups.at(0) ?? null; - - if ( - album.artistContribs.length === 1 && - !empty(group.closelyLinkedArtists) && - (album.artistContribs[0].artist.name === - group.closelyLinkedArtists[0].artist.name) - ) { - query.notedArtistContribs = []; - } else { - query.notedArtistContribs = album.artistContribs; + if (album.groups.length > 1) { + const contextGroup = group; + + const candidateGroups = + album.groups + .filter(group => !group.excludeFromGalleryTabs) + .filter(group => group.category !== contextGroup.category); + + if (!empty(candidateGroups)) { + return { + mode: 'group', + notedGroup: candidateGroups.at(0), + }; + } } - return query; + if (!empty(album.artistContribs)) { + if ( + album.artistContribs.length === 1 && + !empty(group.closelyLinkedArtists) && + (album.artistContribs[0].artist.name === + group.closelyLinkedArtists[0].artist.name) + ) { + return {mode: null}; + } + + return { + mode: 'artists', + notedArtistContribs: album.artistContribs, + }; + } + + return {mode: null};; }, relations: (relation, query, _album, _group) => ({ artistCredit: - relation('generateArtistCredit', query.notedArtistContribs, []), + (query.mode === 'artists' + ? relation('generateArtistCredit', query.notedArtistContribs, []) + : null), }), data: (query, _album, _group) => ({ + mode: query.mode, + groupName: - (query.notedGroup + (query.mode === 'group' ? query.notedGroup.name : null), }), generate: (data, relations, {language}) => language.encapsulate('misc.coverGrid.tab', capsule => - (data.groupName + (data.mode === 'group' ? language.$(capsule, 'group', { group: data.groupName, }) - : relations.artistCredit + : data.mode === 'artists' ? relations.artistCredit.slots({ normalStringKey: capsule + '.artists', |