FileStatusPhase,
} from './consumer-status.service'
import { DocumentService } from './rest/document.service'
+import { Subscription } from 'rxjs'
@Injectable({
providedIn: 'root',
})
export class UploadDocumentsService {
+ private uploadSubscriptions: Array<Subscription> = []
+
constructor(
private documentService: DocumentService,
private consumerStatusService: ConsumerStatusService
status.message = $localize`Connecting...`
- this.documentService.uploadDocument(formData).subscribe({
- next: (event) => {
- if (event.type == HttpEventType.UploadProgress) {
- status.updateProgress(
- FileStatusPhase.UPLOADING,
- event.loaded,
- event.total
- )
- status.message = $localize`Uploading...`
- } else if (event.type == HttpEventType.Response) {
- status.taskId = event.body['task_id']
- status.message = $localize`Upload complete, waiting...`
- }
- },
- error: (error) => {
- switch (error.status) {
- case 400: {
- this.consumerStatusService.fail(status, error.error.document)
- break
- }
- default: {
- this.consumerStatusService.fail(
- status,
- $localize`HTTP error: ${error.status} ${error.statusText}`
+ this.uploadSubscriptions[file.name] = this.documentService
+ .uploadDocument(formData)
+ .subscribe({
+ next: (event) => {
+ if (event.type == HttpEventType.UploadProgress) {
+ status.updateProgress(
+ FileStatusPhase.UPLOADING,
+ event.loaded,
+ event.total
)
- break
+ status.message = $localize`Uploading...`
+ } else if (event.type == HttpEventType.Response) {
+ status.taskId = event.body['task_id']
+ status.message = $localize`Upload complete, waiting...`
+ this.uploadSubscriptions[file.name]?.complete()
+ }
+ },
+ error: (error) => {
+ switch (error.status) {
+ case 400: {
+ this.consumerStatusService.fail(
+ status,
+ error.error.document
+ )
+ break
+ }
+ default: {
+ this.consumerStatusService.fail(
+ status,
+ $localize`HTTP error: ${error.status} ${error.statusText}`
+ )
+ break
+ }
}
- }
- },
- })
+ this.uploadSubscriptions[file.name]?.complete()
+ },
+ })
})
}
}