From dc577200fc6c469fdc972f4d00216e41b7e51024 Mon Sep 17 00:00:00 2001
From: "(quasar) nebula" <qznebula@protonmail.com>
Date: Wed, 6 Mar 2024 14:24:15 -0400
Subject: data: Track.isOriginalRelease, Track.isRerelease

---
 src/data/composite/things/track/index.js |  1 +
 src/data/things/track.js                 | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+)

(limited to 'src')

diff --git a/src/data/composite/things/track/index.js b/src/data/composite/things/track/index.js
index b76966d1..14fbdef0 100644
--- a/src/data/composite/things/track/index.js
+++ b/src/data/composite/things/track/index.js
@@ -8,6 +8,7 @@ export {default as withAlbum} from './withAlbum.js';
 export {default as withAlwaysReferenceByDirectory} from './withAlwaysReferenceByDirectory.js';
 export {default as withContainingTrackSection} from './withContainingTrackSection.js';
 export {default as withHasUniqueCoverArt} from './withHasUniqueCoverArt.js';
+export {default as withOriginalRelease} from './withOriginalRelease.js';
 export {default as withOtherReleases} from './withOtherReleases.js';
 export {default as withPropertyFromAlbum} from './withPropertyFromAlbum.js';
 export {default as withPropertyFromOriginalRelease} from './withPropertyFromOriginalRelease.js';
diff --git a/src/data/things/track.js b/src/data/things/track.js
index eda68a4e..3ead059a 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -27,6 +27,7 @@ import {
   exposeDependency,
   exposeDependencyOrContinue,
   exposeUpdateValueOrContinue,
+  exposeWhetherDependencyAvailable,
 } from '#composite/control-flow';
 
 import {
@@ -62,6 +63,7 @@ import {
   withAlwaysReferenceByDirectory,
   withContainingTrackSection,
   withHasUniqueCoverArt,
+  withOriginalRelease,
   withOtherReleases,
   withPropertyFromAlbum,
 } from '#composite/things/track';
@@ -348,6 +350,23 @@ export class Track extends Thing {
       exposeDependency({dependency: '#hasUniqueCoverArt'}),
     ],
 
+    isOriginalRelease: [
+      withOriginalRelease(),
+
+      exposeWhetherDependencyAvailable({
+        dependency: '#originalRelease',
+        negate: input.value(true),
+      }),
+    ],
+
+    isRerelease: [
+      withOriginalRelease(),
+
+      exposeWhetherDependencyAvailable({
+        dependency: '#originalRelease',
+      }),
+    ],
+
     otherReleases: [
       withOtherReleases(),
       exposeDependency({dependency: '#otherReleases'}),
-- 
cgit 1.3.0-6-gf8a5