feat: harden nested audio metadata contract and UI consistency

This commit is contained in:
neon
2026-03-29 10:04:26 -06:00
parent efbb63e764
commit d5ba57f483
16 changed files with 519 additions and 171 deletions
+8 -4
View File
@@ -60,6 +60,13 @@ export type BookDetailFile = {
export type ProviderIds = Partial<Record<MetadataProviderKey, string | null>>;
export type AudioMetadata = {
narrators: NarratorRef[];
durationSeconds: number | null;
abridged: boolean;
chapters: AudiobookChapter[] | null;
};
export type BookDetail = {
id: number;
libraryId: number;
@@ -82,16 +89,13 @@ export type BookDetail = {
coverSource: "extracted" | "custom" | null;
providerIds: ProviderIds;
authors: { id: number; name: string; sortName: string | null }[];
narrators: NarratorRef[];
genres: string[];
tags: string[];
files: BookDetailFile[];
lastWrittenAt: string | null;
metadataScore: number | null;
readStatus: UserBookStatus | null;
durationSeconds: number | null;
abridged: boolean;
chapters: AudiobookChapter[] | null;
audioMetadata: AudioMetadata | null;
formatPriority: string[];
comicMetadata: ComicMetadataFields | null;
};