From e1141ea9d7554ac03bd1831bf882a45706e0b46b Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Mon, 7 Mar 2022 00:31:48 -0400 Subject: fix unique artists not being shown in track list --- src/page/album.js | 12 ++++++++---- src/util/sugar.js | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/page/album.js b/src/page/album.js index d7447a4..6bcff88 100644 --- a/src/page/album.js +++ b/src/page/album.js @@ -7,13 +7,14 @@ import fixWS from 'fix-whitespace'; import * as html from '../util/html.js'; import { - bindOpts + bindOpts, + compareArrays, } from '../util/sugar.js'; import { getAlbumCover, getAlbumListTag, - getTotalDuration + getTotalDuration, } from '../util/wiki-data.js'; // Page exports @@ -36,13 +37,16 @@ export function write(album, {wikiData}) { track: link.track(track) }; return `
  • ${ - (track.artists === album.artists + (compareArrays( + track.artistContribs.map(c => c.who), + album.artistContribs.map(c => c.who), + {checkOrder: false}) ? strings('trackList.item.withDuration', itemOpts) : strings('trackList.item.withDuration.withArtists', { ...itemOpts, by: `${ strings('trackList.item.withArtists.by', { - artists: getArtistString(track.artists) + artists: getArtistString(track.artistContribs) }) }` })) diff --git a/src/util/sugar.js b/src/util/sugar.js index c8f1706..7a13227 100644 --- a/src/util/sugar.js +++ b/src/util/sugar.js @@ -32,6 +32,11 @@ export const filterEmptyLines = string => string.split('\n').filter(line => line export const unique = arr => Array.from(new Set(arr)); +export const compareArrays = (arr1, arr2, {checkOrder = true} = {}) => ( + arr1.length === arr2.length && (checkOrder + ? (arr1.every((x, i) => arr2[i] === x)) + : (arr1.every(x => arr2.includes(x))))); + // Stolen from jq! Which pro8a8ly stole the concept from other places. Nice. export const withEntries = (obj, fn) => Object.fromEntries(fn(Object.entries(obj))); -- cgit 1.3.0-6-gf8a5