« get me outta code hell

data: Track.suffixDirectory from name detail - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-05-28 15:01:17 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-05-28 15:01:17 -0300
commit77307b738a8bc85640f53c34f8150ce179bdeefc (patch)
treeed25fd75038f3f290558c339c1c338b65e96485a
parent508a8e1ae052b9e46f6d6e811a44576a61613c65 (diff)
data: Track.suffixDirectory from name detail preview
-rw-r--r--src/data/things/album/Album.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js
index 2a21d52e..47abb73a 100644
--- a/src/data/things/album/Album.js
+++ b/src/data/things/album/Album.js
@@ -4,6 +4,7 @@ import Thing from '#thing';
 import {getKebabCase} from '#wiki-data';
 
 import {
+  anyOf,
   is,
   isBoolean,
   isContributionList,
@@ -138,11 +139,40 @@ export class Album extends Thing {
               return true;
             },
           }),
+
+        suffix: 'suffixDirectory',
       }),
 
       exposeDependency('#directory'),
     ],
 
+    suffixDirectory: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(
+          anyOf(is(false), isDirectory)),
+      }),
+
+      {
+        transform: (value, continuation) =>
+          (value === false
+            ? null
+            : continuation()),
+      },
+
+      {
+        dependencies: ['nameDetail'],
+        compute(continuation, {nameDetail}) {
+          if (nameDetail) {
+            return getKebabCase(nameDetail);
+          }
+
+          return continuation();
+        },
+      },
+
+      exposeConstant(V(null)),
+    ],
+
     directorySuffixForTracks: [
       exposeUpdateValueOrContinue({
         validate: input.value(isDirectory),
@@ -660,6 +690,8 @@ export class Album extends Thing {
       'Name Detail For Tracks': {property: 'nameDetailForTracks'},
 
       'Directory': {property: 'directory'},
+      'Suffix Own Directory': {property: 'suffixDirectory'},
+
       'Directory Suffix': {property: 'directorySuffixForTracks'},
       'Suffix Track Directories': {property: 'suffixTrackDirectoriesByDefault'},