diff --git a/src/backend/common/transforms/UserTransformer.ts b/src/backend/common/transforms/UserTransformer.ts index 9fe161c0..50ea477e 100644 --- a/src/backend/common/transforms/UserTransformer.ts +++ b/src/backend/common/transforms/UserTransformer.ts @@ -11,26 +11,47 @@ export default class UserTransformer extends AtomicPartsTransformer) { if (!isUserStage(data)) { throw new Error(`UserTransformer is only usable with 'user' type stages`); } + const { + title = [], + artists = [], + album = [], + albumArtists = [], + ...rest + } = data; + + const { + defaults: { + title: defTitle = [], + artists: defArtist = [], + album: defAlbum = [], + albumArtists: defAA = [], + } = {}, + } = this.config; + const stage: PlayTransformUserStage = { - ...data, + ...rest, + title: [...title, ...defTitle], + artists: [...artists, ...defArtist], + album: [...album, ...defAlbum], + albumArtists: [...albumArtists, ...defAA], type: 'user' } - for (const k of ['artists', 'title', 'album']) { - if (!(k in data)) { + for (const k of ['artists', 'title', 'album', 'albumArtists']) { + if (!(k in stage)) { continue; } - if (!Array.isArray(data[k])) { + if (!Array.isArray(stage[k])) { throw new Error(`${k} must be an array`); } try { - isSearchAndReplaceTerm(data[k]); - stage[k] = data[k].map(configValToSearchReplace); + isSearchAndReplaceTerm(stage[k]); + stage[k] = stage[k].map(configValToSearchReplace); } catch (e) { throw new Error(`Property '${k}' was not a valid type`, { cause: e }); }