From df29bd91d77f2f68aec769644c07935cc6c86f60 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Fri, 8 Apr 2022 18:55:06 +0300 Subject: [PATCH] RED-3845: fix file caching --- .../file-preview/services/file-preview-state.service.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts index 2dc5d7f69..3decbf431 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts @@ -1,5 +1,5 @@ import { Injectable, Injector } from '@angular/core'; -import { combineLatest, firstValueFrom, from, Observable, pairwise, switchMap } from 'rxjs'; +import { combineLatest, firstValueFrom, from, Observable, of, pairwise, switchMap } from 'rxjs'; import { Dossier, File } from '@red/domain'; import { ActivatedRoute } from '@angular/router'; import { FilesMapService } from '@services/entity-services/files-map.service'; @@ -69,7 +69,7 @@ export class FilePreviewStateService { startWith(undefined), pairwise(), filter(([oldFile, newFile]) => oldFile?.cacheIdentifier !== newFile.cacheIdentifier), - switchMap(([, newFile]) => this.#downloadOriginalFile(newFile.cacheIdentifier)), + switchMap(([oldFile, newFile]) => this.#downloadOriginalFile(newFile.cacheIdentifier, !!oldFile?.cacheIdentifier)), ); } @@ -80,8 +80,9 @@ export class FilePreviewStateService { ); } - #downloadOriginalFile(cacheIdentifier?: string): Observable { + #downloadOriginalFile(cacheIdentifier: string, wipeCaches = true): Observable { const downloadFile = this._fileManagementService.downloadOriginalFile(this.dossierId, this.fileId, 'body', cacheIdentifier); - return from(wipeFilesCache()).pipe(switchMap(() => downloadFile)); + const obs = wipeCaches ? from(wipeFilesCache()) : of({}); + return obs.pipe(switchMap(() => downloadFile)); } }