Add all minified fields to expanded library item JSON so socket updates remain a strict superset of shelf payloads

This commit is contained in:
mikiher 2026-07-01 22:30:21 +03:00
parent 6f03467f35
commit 3bb53d939d
4 changed files with 196 additions and 36 deletions

View file

@ -451,6 +451,11 @@ class Podcast extends Model {
}
}
/**
* Minified podcast JSON for list/shelf endpoints.
* `toOldJSONExpanded()` must be a strict superset: every key here must exist in expanded
* with the same value semantics. Only additive changes to expanded; never remove or rename keys.
*/
toOldJSONMinified() {
return {
id: this.id,
@ -468,6 +473,12 @@ class Podcast extends Model {
}
}
/**
* Expanded podcast JSON for item detail and socket events.
* Must be a strict superset of `toOldJSONMinified()` built by spreading minified, then adding expanded-only fields.
*
* @param {string} libraryItemId
*/
toOldJSONExpanded(libraryItemId) {
if (!libraryItemId) {
throw new Error(`[Podcast] Cannot convert to old JSON because libraryItemId is not provided`)
@ -477,18 +488,9 @@ class Podcast extends Model {
}
return {
id: this.id,
libraryItemId: libraryItemId,
metadata: this.oldMetadataToJSONExpanded(),
coverPath: this.coverPath,
tags: [...(this.tags || [])],
episodes: this.podcastEpisodes.map((e) => e.toOldJSONExpanded(libraryItemId)),
autoDownloadEpisodes: this.autoDownloadEpisodes,
autoDownloadSchedule: this.autoDownloadSchedule,
lastEpisodeCheck: this.lastEpisodeCheck?.valueOf() || null,
maxEpisodesToKeep: this.maxEpisodesToKeep,
maxNewEpisodesToDownload: this.maxNewEpisodesToDownload,
size: this.size
...this.toOldJSONMinified(),
libraryItemId,
episodes: this.podcastEpisodes.map((e) => e.toOldJSONExpanded(libraryItemId))
}
}
}