diff --git a/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.html b/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.html index d4c616ee9..b5228ec46 100644 --- a/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.html +++ b/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.html @@ -127,6 +127,8 @@ } @else { + + {{t('page-num-label', {page: pageNum()})}} / {{maxPages}} @@ -134,12 +136,12 @@ {{t('completion-label', {percent: (pageNum() / maxPages) | percent})}} - @let timeLeft = readingTimeLeft(); + @let timeLeft = readingTimeLeftResource.value(); @if (timeLeft) { , - {{timeLeft | readTimeLeft }} + {{timeLeft! | readTimeLeft }} } diff --git a/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts b/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts index 53a0b409d..057e9d848 100644 --- a/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts +++ b/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts @@ -15,6 +15,7 @@ import { OnInit, Renderer2, RendererStyleFlags2, + resource, Signal, ViewChild, ViewContainerRef @@ -61,7 +62,6 @@ import {ColumnLayoutClassPipe} from "../../_pipes/column-layout-class.pipe"; import {WritingStyleClassPipe} from "../../_pipes/writing-style-class.pipe"; import {ChapterService} from "../../../_services/chapter.service"; import {ReadTimeLeftPipe} from "../../../_pipes/read-time-left.pipe"; -import {HourEstimateRange} from "../../../_models/series-detail/hour-estimate-range"; interface HistoryPoint { @@ -262,13 +262,21 @@ export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy { */ horizontalScrollbarNeeded = false; scrollbarNeeded = false; - // readingDirection: ReadingDirection = ReadingDirection.LeftToRight; - // clickToPaginate = false; /** * Used solely for fullscreen to apply a hack */ darkMode = model(true); - readingTimeLeft = model(null); + readingTimeLeftResource = resource({ + request: () => ({ + chapterId: this.chapterId, + seriesId: this.seriesId, + pageNumber: this.pageNum() + }), + loader: async ({ request }) => { + return this.readerService.getTimeLeftForChapter(this.seriesId, this.chapterId).toPromise(); + } + }); + /** * Anchors that map to the page number. When you click on one of these, we will load a given page up for the user. */ @@ -287,11 +295,6 @@ export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy { */ isFullscreen: boolean = false; - /** - * How to render the page content - */ - //layoutMode: BookPageLayoutMode = BookPageLayoutMode.Default; - //layoutMode = model(BookPageLayoutMode.Default); /** * Width of the document (in non-column layout), used for column layout virtual paging @@ -1478,7 +1481,7 @@ export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy { this.applyFullscreen(); break; case "writingStyle": - this.applyWritingStyle(res.object as WritingStyle); + this.applyWritingStyle(); break; case "layoutMode": this.applyLayoutMode(res.object as BookPageLayoutMode); @@ -1553,7 +1556,7 @@ export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy { this.incognitoMode = false; const newRoute = this.readerService.getNextChapterUrl(this.router.url, this.chapterId, this.incognitoMode, this.readingListMode, this.readingListId); window.history.replaceState({}, '', newRoute); - this.toastr.info('Incognito mode is off. Progress will now start being tracked.'); + this.toastr.info(translate('toasts.incognito-off')); this.saveProgress(); } @@ -1578,8 +1581,7 @@ export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy { } } - applyWritingStyle(writingStyle: WritingStyle) { - //this.readerSettingsService.updateWritingStyle(writingStyle); + applyWritingStyle() { setTimeout(() => this.updateImageSizes()); if (this.layoutMode() !== BookPageLayoutMode.Default) { const lastSelector = this.lastSeenScrollPartPath;