From ea44a716ab88fa183451bf247b59983c5e59cd49 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Thu, 14 Oct 2021 22:22:29 +0300 Subject: [PATCH] update file upload service --- .../services/file-upload.service.ts | 32 +++++++++++++++---- libs/red-ui-http/src/lib/api.module.ts | 9 +----- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts index e2299262f..e6908b7f0 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts @@ -1,4 +1,4 @@ -import { ApplicationRef, Injectable } from '@angular/core'; +import { ApplicationRef, Injectable, Injector } from '@angular/core'; import { FileUploadModel } from '../model/file-upload.model'; import { AppStateService } from '@state/app-state.service'; import { HttpErrorResponse, HttpEventType } from '@angular/common/http'; @@ -6,10 +6,11 @@ import { interval, Subscription } from 'rxjs'; import { ConfigService } from '@services/config.service'; import { TranslateService } from '@ngx-translate/core'; import { UploadDownloadDialogService } from './upload-download-dialog.service'; -import { UploadControllerService } from '@redaction/red-ui-http'; +import { FileUploadResult } from '@redaction/red-ui-http'; import { isCsv } from '@utils/file-drop-utils'; -import { ErrorMessageService } from '@iqser/common-ui'; +import { ErrorMessageService, GenericService, RequiredParam, Validate } from '@iqser/common-ui'; import { DossiersService } from '@services/entity-services/dossiers.service'; +import { HeadersConfiguration } from '../../../../../../../libs/common-ui/src/lib/utils/headers-configuration'; export interface ActiveUpload { subscription: Subscription; @@ -17,7 +18,7 @@ export interface ActiveUpload { } @Injectable() -export class FileUploadService { +export class FileUploadService extends GenericService { static readonly MAX_PARALLEL_UPLOADS = 5; files: FileUploadModel[] = []; groupedFiles: { [key: string]: FileUploadModel[] } = {}; @@ -32,11 +33,11 @@ export class FileUploadService { private readonly _applicationRef: ApplicationRef, private readonly _translateService: TranslateService, private readonly _configService: ConfigService, - private readonly _uploadControllerService: UploadControllerService, private readonly _dialogService: UploadDownloadDialogService, private readonly _errorMessageService: ErrorMessageService, + protected readonly _injector: Injector, ) { - this._uploadControllerService.defaultHeaders = this._uploadControllerService.defaultHeaders.append('ngsw-bypass', 'true'); + super(_injector, 'upload'); interval(2500).subscribe(() => { this._handleUploads(); }); @@ -120,6 +121,23 @@ export class FileUploadService { } } + @Validate() + uploadFileForm(@RequiredParam() dossierId: string, file?: Blob) { + const formParams = new FormData(); + + if (file !== undefined) { + formParams.append('file', file); + } + + const headers = HeadersConfiguration.getHeaders({ contentType: false }).append('ngsw-bypass', 'true'); + + return this._http.post(`/${this._defaultModelPath}/${dossierId}`, formParams, { + headers, + observe: 'events', + reportProgress: true, + }); + } + private _addFileToGroup(file: FileUploadModel) { if (!this.groupedFiles[file.dossierId]) { this.groupedFiles[file.dossierId] = []; @@ -155,7 +173,7 @@ export class FileUploadService { private _createSubscription(uploadFile: FileUploadModel) { this.activeUploads++; - const obs = this._uploadControllerService.uploadFileForm(uploadFile.dossierId, uploadFile.file, 'events', true); + const obs = this.uploadFileForm(uploadFile.dossierId, uploadFile.file); return obs.subscribe( async event => { if (event.type === HttpEventType.UploadProgress) { diff --git a/libs/red-ui-http/src/lib/api.module.ts b/libs/red-ui-http/src/lib/api.module.ts index ea20c4796..faff600c0 100644 --- a/libs/red-ui-http/src/lib/api.module.ts +++ b/libs/red-ui-http/src/lib/api.module.ts @@ -1,7 +1,6 @@ import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'; import { Configuration } from './configuration'; import { HttpClient } from '@angular/common/http'; -import { UploadControllerService } from './api/uploadController.service'; import { ViewedPagesControllerService } from './api/viewedPagesController.service'; import { WatermarkControllerService } from './api/watermarkController.service'; import { SearchControllerService } from './api/searchController.service'; @@ -11,13 +10,7 @@ import { NotificationControllerService } from './api/notificationController.serv imports: [], declarations: [], exports: [], - providers: [ - UploadControllerService, - ViewedPagesControllerService, - WatermarkControllerService, - SearchControllerService, - NotificationControllerService, - ], + providers: [ViewedPagesControllerService, WatermarkControllerService, SearchControllerService, NotificationControllerService], }) export class ApiModule { constructor(@Optional() @SkipSelf() parentModule: ApiModule, @Optional() http: HttpClient) {