From ebfdc595f32b7303259728fb248b6fe8e6c19c6c Mon Sep 17 00:00:00 2001 From: Tomasz Nastaly Date: Fri, 16 May 2025 11:32:38 +0200 Subject: [PATCH] AAE-34641 refactor viewer-render loading --- .../pdf-viewer/pdf-viewer.component.ts | 1 + .../viewer-render.component.html | 11 ++++--- .../viewer-render/viewer-render.component.ts | 32 +++++++++++-------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/lib/core/src/lib/viewer/components/pdf-viewer/pdf-viewer.component.ts b/lib/core/src/lib/viewer/components/pdf-viewer/pdf-viewer.component.ts index 622685f465..5f5e231857 100644 --- a/lib/core/src/lib/viewer/components/pdf-viewer/pdf-viewer.component.ts +++ b/lib/core/src/lib/viewer/components/pdf-viewer/pdf-viewer.component.ts @@ -614,6 +614,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy { * */ onPagesLoaded() { + console.log('EMITED onPagesLoaded'); this.pagesLoaded.emit(); this.isPanelDisabled = false; } diff --git a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html index 61deb391d8..d7cde7ece7 100644 --- a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html +++ b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html @@ -1,5 +1,5 @@
@@ -14,8 +14,9 @@
+

isLoading {{ isLoading$ | async }}

@@ -39,7 +40,7 @@ [urlFile]="urlFile" [fileName]="internalFileName" [cacheType]="cacheTypeForContent" - (pagesLoaded)="isContentReady = true" + (pagesLoaded)="markContentAsReady()" (close)="onClose()" (error)="onUnsupportedFile()" /> @@ -54,7 +55,7 @@ [blobFile]="blobFile" (error)="onUnsupportedFile()" (submit)="onSubmitFile($event)" - (imageLoaded)="isContentReady = true" + (imageLoaded)="markContentAsReady()" (isSaving)="isSaving.emit($event)" /> @@ -68,7 +69,7 @@ [blobFile]="blobFile" [fileName]="internalFileName" (error)="onUnsupportedFile()" - (canPlay)="isContentReady = true" + (canPlay)="markContentAsReady()" /> diff --git a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts index 725159123f..692a3c2f22 100644 --- a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts @@ -16,7 +16,7 @@ */ import { AppExtensionService, ExtensionsModule, ViewerExtensionRef } from '@alfresco/adf-extensions'; -import { NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common'; +import { AsyncPipe, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common'; import { Component, EventEmitter, Injector, Input, OnChanges, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; @@ -28,6 +28,7 @@ import { MediaPlayerComponent } from '../media-player/media-player.component'; import { PdfViewerComponent } from '../pdf-viewer/pdf-viewer.component'; import { TxtViewerComponent } from '../txt-viewer/txt-viewer.component'; import { UnknownFormatComponent } from '../unknown-format/unknown-format.component'; +import { BehaviorSubject } from 'rxjs'; type ViewerType = 'media' | 'image' | 'pdf' | 'unknown'; @@ -52,7 +53,8 @@ type ViewerType = 'media' | 'image' | 'pdf' | 'unknown'; UnknownFormatComponent, ExtensionsModule, NgForOf, - NgSwitchDefault + NgSwitchDefault, + AsyncPipe ], providers: [ViewUtilService] }) @@ -88,10 +90,6 @@ export class ViewerRenderComponent implements OnChanges, OnInit { @Input() fileName: string; - /** Override loading status */ - @Input() - isLoading = false; - /** Enable when where is possible the editing functionalities */ @Input() readOnly = true; @@ -144,7 +142,7 @@ export class ViewerRenderComponent implements OnChanges, OnInit { extension: string; internalFileName: string; viewerType: ViewerType = 'unknown'; - isContentReady = false; + readonly isLoading$ = new BehaviorSubject(false); /** * Returns a list of the active Viewer content extensions. @@ -184,23 +182,19 @@ export class ViewerRenderComponent implements OnChanges, OnInit { ngOnInit() { this.cacheTypeForContent = 'no-cache'; + this.setDefaultLoadingState(); } ngOnChanges() { - this.updateLoadingState(); - if (this.blobFile) { this.setUpBlobData(); } else if (this.urlFile) { this.setUpUrlFile(); } - - this.updateLoadingState(); } - private updateLoadingState() { - this.isContentReady = !(this.viewerType === 'media' || this.viewerType === 'pdf' || this.viewerType === 'image'); - this.isLoading = !this.blobFile && !this.urlFile; + markContentAsReady() { + this.isLoading$.next(false); } private setUpBlobData() { @@ -243,4 +237,14 @@ export class ViewerRenderComponent implements OnChanges, OnInit { onClose() { this.close.next(true); } + + private isPreviewableType() { + return this.viewerType === 'media' || this.viewerType === 'pdf' || this.viewerType === 'image'; + } + + private setDefaultLoadingState() { + if (this.isPreviewableType()) { + this.isLoading$.next(true); + } + } }