fix: use audiobook thumbnail URL for audiobook entries in notebook (#2763)

This commit is contained in:
ACX
2026-02-15 09:16:11 -07:00
committed by GitHub
parent 03272f7c35
commit 0358667323
7 changed files with 11 additions and 3 deletions

View File

@@ -21,6 +21,7 @@ public class NotebookEntry {
private String color;
private String style;
private String chapterTitle;
private String primaryBookType;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}

View File

@@ -45,6 +45,7 @@ public interface NotebookEntryRepository extends Repository<AnnotationEntity, Lo
String getColor();
String getStyle();
String getChapterTitle();
String getPrimaryBookType();
LocalDateTime getCreatedAt();
LocalDateTime getUpdatedAt();
}
@@ -56,6 +57,7 @@ public interface NotebookEntryRepository extends Repository<AnnotationEntity, Lo
@Query(value = "SELECT t.id, t.type, t.book_id AS bookId, t.book_title AS bookTitle, " +
"t.text, t.note, t.color, t.style, t.chapter_title AS chapterTitle, " +
"(SELECT bf.book_type FROM book_file bf WHERE bf.book_id = t.book_id ORDER BY bf.id LIMIT 1) AS primaryBookType, " +
"t.created_at AS createdAt, t.updated_at AS updatedAt " +
"FROM (" + ENTRIES_UNION + ") t" + ENTRIES_FILTER,
countQuery = "SELECT COUNT(*) FROM (" + ENTRIES_UNION + ") t" + ENTRIES_FILTER,

View File

@@ -81,6 +81,7 @@ public class NotebookService {
.color(p.getColor())
.style(p.getStyle())
.chapterTitle(p.getChapterTitle())
.primaryBookType(p.getPrimaryBookType())
.createdAt(p.getCreatedAt())
.updatedAt(p.getUpdatedAt())
.build();

View File

@@ -179,10 +179,13 @@ export class NotebookComponent implements OnInit, OnDestroy {
const groupMap = new Map<number, BookGroup>();
for (const entry of entries) {
if (!groupMap.has(entry.bookId)) {
const isAudiobook = entry.primaryBookType === 'AUDIOBOOK';
groupMap.set(entry.bookId, {
bookId: entry.bookId,
bookTitle: entry.bookTitle,
thumbnailUrl: this.urlHelper.getThumbnailUrl1(entry.bookId),
thumbnailUrl: isAudiobook
? this.urlHelper.getAudiobookThumbnailUrl(entry.bookId)
: this.urlHelper.getDirectThumbnailUrl(entry.bookId),
entries: [],
});
}

View File

@@ -8,6 +8,7 @@ export interface NotebookEntry {
color?: string;
style?: string;
chapterTitle?: string;
primaryBookType?: string;
createdAt: string;
updatedAt?: string;
}

View File

@@ -372,7 +372,7 @@ export class ReadingSessionTimelineComponent implements OnInit {
}
public getCoverUrl(bookId: number): string {
return this.urlHelperService.getThumbnailUrl1(bookId);
return this.urlHelperService.getDirectThumbnailUrl(bookId);
}
public getTooltipContent(session: TimelineSession): string {

View File

@@ -42,7 +42,7 @@ export class UrlHelperService {
return this.appendToken(url);
}
getThumbnailUrl1(bookId: number, coverUpdatedOn?: string): string {
getDirectThumbnailUrl(bookId: number, coverUpdatedOn?: string): string {
let url = `${this.mediaBaseUrl}/book/${bookId}/thumbnail`;
if (coverUpdatedOn) {
url += `?${coverUpdatedOn}`;