From 56a4dd53cd13a53a85a740cdeb4acdcb1b68c258 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 25 Jul 2025 04:51:39 -0300 Subject: content: gGPAlbumGridTab: query.mode --- .../generateGroupGalleryPageAlbumGridTab.js | 64 +++++++++++++--------- 1 file changed, 39 insertions(+), 25 deletions(-) (limited to 'src') 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', -- cgit 1.3.0-6-gf8a5