RED-3701: File preview page query param checks

This commit is contained in:
Adina Țeudan 2022-03-28 20:10:48 +03:00
parent def3a04e55
commit 3db78206cb

View File

@ -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<void> {
// 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<string, AnnotationWrapper>, oldAnnotations: Record<string, AnnotationWrapper>) {
return Object.values(newAnnotations).filter(newAnnotation => {
const oldAnnotation = oldAnnotations[newAnnotation.id];