diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-06 15:34:13 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-10 16:02:39 -0300 |
commit | 67a936adc308a5bec6c969c90d8811fcbce3009b (patch) | |
tree | 17ce4121d50136ca6d54a666b20ab7dcb216cd94 /src/data | |
parent | 0c08c6225727b9bcc3113ec2604c84db9012faf2 (diff) |
data: Track: remove withAlbum, link album directly
Diffstat (limited to 'src/data')
-rw-r--r-- | src/data/composite/things/track/index.js | 1 | ||||
-rw-r--r-- | src/data/composite/things/track/withAlbum.js | 22 | ||||
-rw-r--r-- | src/data/composite/things/track/withAlwaysReferenceByDirectory.js | 15 | ||||
-rw-r--r-- | src/data/composite/things/track/withPropertyFromAlbum.js | 5 | ||||
-rw-r--r-- | src/data/things/album.js | 2 | ||||
-rw-r--r-- | src/data/things/track.js | 28 |
6 files changed, 10 insertions, 63 deletions
diff --git a/src/data/composite/things/track/index.js b/src/data/composite/things/track/index.js index bab97882..eeee4ecf 100644 --- a/src/data/composite/things/track/index.js +++ b/src/data/composite/things/track/index.js @@ -1,7 +1,6 @@ export {default as exitWithoutUniqueCoverArt} from './exitWithoutUniqueCoverArt.js'; export {default as inheritContributionListFromMainRelease} from './inheritContributionListFromMainRelease.js'; export {default as inheritFromMainRelease} from './inheritFromMainRelease.js'; -export {default as withAlbum} from './withAlbum.js'; export {default as withAllReleases} from './withAllReleases.js'; export {default as withAlwaysReferenceByDirectory} from './withAlwaysReferenceByDirectory.js'; export {default as withContainingTrackSection} from './withContainingTrackSection.js'; diff --git a/src/data/composite/things/track/withAlbum.js b/src/data/composite/things/track/withAlbum.js deleted file mode 100644 index 4c55e1f4..00000000 --- a/src/data/composite/things/track/withAlbum.js +++ /dev/null @@ -1,22 +0,0 @@ -// Gets the track's album. This will early exit if albumData is missing. -// If there's no album whose list of tracks includes this track, the output -// dependency will be null. - -import {templateCompositeFrom} from '#composite'; - -import {withUniqueReferencingThing} from '#composite/wiki-data'; -import {soupyReverse} from '#composite/wiki-properties'; - -export default templateCompositeFrom({ - annotation: `withAlbum`, - - outputs: ['#album'], - - steps: () => [ - withUniqueReferencingThing({ - reverse: soupyReverse.input('albumsWhoseTracksInclude'), - }).outputs({ - ['#uniqueReferencingThing']: '#album', - }), - ], -}); diff --git a/src/data/composite/things/track/withAlwaysReferenceByDirectory.js b/src/data/composite/things/track/withAlwaysReferenceByDirectory.js index aebcf793..60faeaf4 100644 --- a/src/data/composite/things/track/withAlwaysReferenceByDirectory.js +++ b/src/data/composite/things/track/withAlwaysReferenceByDirectory.js @@ -17,6 +17,8 @@ import { exposeUpdateValueOrContinue, } from '#composite/control-flow'; +import withPropertyFromAlbum from './withPropertyFromAlbum.js'; + export default templateCompositeFrom({ annotation: `withAlwaysReferenceByDirectory`, @@ -27,18 +29,7 @@ export default templateCompositeFrom({ validate: input.value(isBoolean), }), - // withAlwaysReferenceByDirectory is sort of a fragile area - we can't - // find the track's album the normal way because albums' track lists - // recurse back into alwaysReferenceByDirectory! - withResolvedReference({ - ref: 'dataSourceAlbum', - find: soupyFind.input('album'), - }).outputs({ - '#resolvedReference': '#album', - }), - - withPropertyFromObject({ - object: '#album', + withPropertyFromAlbum({ property: input.value('alwaysReferenceTracksByDirectory'), }), diff --git a/src/data/composite/things/track/withPropertyFromAlbum.js b/src/data/composite/things/track/withPropertyFromAlbum.js index e9c5b56e..311a3448 100644 --- a/src/data/composite/things/track/withPropertyFromAlbum.js +++ b/src/data/composite/things/track/withPropertyFromAlbum.js @@ -5,8 +5,6 @@ import {input, templateCompositeFrom} from '#composite'; import {withPropertyFromObject} from '#composite/data'; -import withAlbum from './withAlbum.js'; - export default templateCompositeFrom({ annotation: `withPropertyFromAlbum`, @@ -19,10 +17,9 @@ export default templateCompositeFrom({ }) => ['#album.' + property], steps: () => [ - withAlbum(), withPropertyFromObject({ - object: '#album', + object: 'album', property: input('property'), }), diff --git a/src/data/things/album.js b/src/data/things/album.js index 606bc194..df19e817 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -646,7 +646,7 @@ export class Album extends Thing { artworkData.push(...entry.trackArtworks); - entry.dataSourceAlbum = albumRef; + entry.album = album; } closeCurrentTrackSection(); diff --git a/src/data/things/track.js b/src/data/things/track.js index f514f7bb..457dca93 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -64,7 +64,6 @@ import { exitWithoutUniqueCoverArt, inheritContributionListFromMainRelease, inheritFromMainRelease, - withAlbum, withAllReleases, withAlwaysReferenceByDirectory, withContainingTrackSection, @@ -124,6 +123,10 @@ export class Track extends Thing { }) ], + album: thing({ + class: input.value(Album), + }), + additionalNames: additionalNameList(), bandcampTrackIdentifier: simpleString(), @@ -226,14 +229,6 @@ export class Track extends Thing { find: soupyFind.input('track'), }), - // Internal use only - for directly identifying an album inside a track's - // util.inspect display, if it isn't indirectly available (by way of being - // included in an album's track list). - dataSourceAlbum: singleReference({ - class: input.value(Album), - find: soupyFind.input('album'), - }), - artistContribs: [ inheritContributionListFromMainRelease(), @@ -394,11 +389,6 @@ export class Track extends Thing { commentatorArtists: commentatorArtists(), - album: [ - withAlbum(), - exposeDependency({dependency: '#album'}), - ], - date: [ withDate(), exposeDependency({dependency: '#date'}), @@ -747,15 +737,7 @@ export class Track extends Thing { let album; if (depth >= 0) { - try { - album = this.album; - } catch (_error) { - // Computing album might crash for any reason, which we don't want to - // distract from another error we might be trying to work out at the - // moment (for which debugging might involve inspecting this track!). - } - - album ??= this.dataSourceAlbum; + album = this.album; } if (album) { |