diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-06-04 12:51:20 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-06-04 12:51:20 -0300 |
commit | 3096df0c06a750fc5a09e3bde93c7e524ee2b310 (patch) | |
tree | 669259f0261a682259564de22250df3763a423d8 /src/data/things | |
parent | 504b464f0904f0e008ee6e886e25c6778a99d479 (diff) | |
parent | 7830c73e6047ab8ec1322c4a56ed6a450bfb11e6 (diff) |
Merge remote-tracking branch 'origin/staging' into data-steps
Diffstat (limited to 'src/data/things')
-rw-r--r-- | src/data/things/thing.js | 26 | ||||
-rw-r--r-- | src/data/things/track.js | 2 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/data/things/thing.js b/src/data/things/thing.js index b74f45f5..5004f4e6 100644 --- a/src/data/things/thing.js +++ b/src/data/things/thing.js @@ -264,26 +264,42 @@ export default class Thing extends CacheableObject { // Dynamically inherit a contribution list from some other object, if it // hasn't been overridden on this object. This is handy for solo albums // where all tracks have the same artist, for example. - // - // Note: The arguments of this function aren't currently final! The final - // format will look more like (contribsByRef, parentContribsByRef), e.g. - // ('artistContribsByRef', '@album/artistContribsByRef'). dynamicInheritContribs: ( + // If this property is explicitly false, the contribution list returned + // will always be empty. + nullerProperty, + + // Property holding contributions on the current object. contribsByRefProperty, + + // Property holding corresponding "default" contributions on the parent + // object, which will fallen back to if the object doesn't have its own + // contribs. parentContribsByRefProperty, + + // Data array to search in and "find" function to locate parent object + // (which will be passed the child object and the wiki data array). thingDataProperty, findFn ) => ({ flags: {expose: true}, expose: { - dependencies: [contribsByRefProperty, thingDataProperty, 'artistData'], + dependencies: [ + contribsByRefProperty, + thingDataProperty, + nullerProperty, + 'artistData', + ].filter(Boolean), + compute({ [Thing.instance]: thing, + [nullerProperty]: nuller, [contribsByRefProperty]: contribsByRef, [thingDataProperty]: thingData, artistData, }) { if (!artistData) return []; + if (nuller === false) return []; const refs = contribsByRef ?? findFn(thing, thingData, {mode: 'quiet'})?.[parentContribsByRefProperty]; diff --git a/src/data/things/track.js b/src/data/things/track.js index 1c2013a2..00585c1e 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -245,6 +245,7 @@ export class Track extends Thing { }, artistContribs: Thing.common.dynamicInheritContribs( + null, 'artistContribsByRef', 'artistContribsByRef', 'albumData', @@ -254,6 +255,7 @@ export class Track extends Thing { contributorContribs: Thing.common.dynamicContribs('contributorContribsByRef'), coverArtistContribs: Thing.common.dynamicInheritContribs( + 'hasCoverArt', 'coverArtistContribsByRef', 'trackCoverArtistContribsByRef', 'albumData', |