From 3db78206cb0be00f38b058327a67de54c017fd48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 28 Mar 2022 20:10:48 +0300 Subject: [PATCH] RED-3701: File preview page query param checks --- .../file-preview-screen.component.ts | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index b43c1a620..e2057fcff 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -337,23 +337,14 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni } } - async viewerPageChanged($event: any) { - if (typeof $event !== 'number') { + async viewerPageChanged(page: any) { + if (typeof page !== 'number') { return; } this._scrollViews(); this.multiSelectService.deactivate(); - - // Add current page in URL query params - const extras: NavigationExtras = { - queryParams: { page: $event }, - queryParamsHandling: 'merge', - replaceUrl: true, - }; - await this._router.navigate([], extras); - - this._changeDetectorRef.markForCheck(); + await this.#updateQueryParamsPage(page); } viewerReady() { @@ -367,8 +358,16 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni // Go to initial page from query params const pageNumber: string = this._lastPage || this._activatedRoute.snapshot.queryParams.page; if (pageNumber) { - setTimeout(() => { - this.selectPage(parseInt(pageNumber, 10)); + setTimeout(async () => { + const file = await this.stateService.file; + let page = parseInt(pageNumber, 10); + if (page < file.numberOfPages || isNaN(page)) { + page = 1; + await this.#updateQueryParamsPage(page); + } else if (page > file.numberOfPages) { + page = file.numberOfPages; + } + this.selectPage(page); this._scrollViews(); this._changeDetectorRef.markForCheck(); this._loadingService.stop(); @@ -455,6 +454,18 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni return this._cleanupAndRedrawAnnotations(annotationsToDraw); } + async #updateQueryParamsPage(page: number): Promise { + // Add current page in URL query params + const extras: NavigationExtras = { + queryParams: { page }, + queryParamsHandling: 'merge', + replaceUrl: true, + }; + await this._router.navigate([], extras); + + this._changeDetectorRef.markForCheck(); + } + #getAnnotationsToDraw(newAnnotations: Record, oldAnnotations: Record) { return Object.values(newAnnotations).filter(newAnnotation => { const oldAnnotation = oldAnnotations[newAnnotation.id];