diff --git a/src/components/audiobooks/AudiobookDetailsModal.tsx b/src/components/audiobooks/AudiobookDetailsModal.tsx index a3a79fc..5bf23b8 100644 --- a/src/components/audiobooks/AudiobookDetailsModal.tsx +++ b/src/components/audiobooks/AudiobookDetailsModal.tsx @@ -548,6 +548,30 @@ export function AudiobookDetailsModal({ + {/* Language */} + {audiobook.language && ( +
+

Language

+

{audiobook.language.charAt(0).toUpperCase() + audiobook.language.slice(1)}

+
+ )} + + {/* Format */} + {audiobook.formatType && ( +
+

Format

+

{audiobook.formatType.charAt(0).toUpperCase() + audiobook.formatType.slice(1)}

+
+ )} + + {/* Publisher */} + {audiobook.publisherName && ( +
+

Publisher

+

{audiobook.publisherName}

+
+ )} + {/* Download Link - subtle utility, visible from any context */} {isAvailable && downloadAvailable && requestId && user?.permissions?.download !== false && (
diff --git a/src/lib/hooks/useAudiobooks.ts b/src/lib/hooks/useAudiobooks.ts index 9380f40..4aa94c5 100644 --- a/src/lib/hooks/useAudiobooks.ts +++ b/src/lib/hooks/useAudiobooks.ts @@ -34,6 +34,9 @@ export interface Audiobook { requestedByUsername?: string | null; // Username who requested (only if not current user) hasReportedIssue?: boolean; // True if an open issue exists for this audiobook isIgnored?: boolean; // True if this user has ignored this audiobook from auto-requests + language?: string; + formatType?: string; + publisherName?: string; } export function useAudiobooks(type: 'popular' | 'new-releases', limit: number = 20, page: number = 1, hideAvailable: boolean = false) { diff --git a/src/lib/integrations/audible.service.ts b/src/lib/integrations/audible.service.ts index cd30487..03d75f5 100644 --- a/src/lib/integrations/audible.service.ts +++ b/src/lib/integrations/audible.service.ts @@ -42,6 +42,9 @@ export interface AudibleAudiobook { series?: string; seriesPart?: string; seriesAsin?: string; + language?: string; + formatType?: string; + publisherName?: string; } export interface AudibleSearchResult { @@ -677,6 +680,9 @@ export class AudibleService { series: data.seriesPrimary?.name || undefined, seriesPart: data.seriesPrimary?.position || undefined, seriesAsin: data.seriesPrimary?.asin || undefined, + language: data.language || undefined, + formatType: data.formatType || undefined, + publisherName: data.publisherName || undefined, }; if (result.coverArtUrl && !result.coverArtUrl.includes('_SL500_')) {