update file upload service
This commit is contained in:
parent
e386c6a28f
commit
ea44a716ab
@ -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<FileUploadResult> {
|
||||
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<FileUploadResult>(`/${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) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user