[develop | DONE | FIX ] Insert claims: avoid showing multiple errors - stop status subsciption when complete or errored

This commit is contained in:
argirok 2024-06-27 12:27:37 +03:00
parent ab3fb51ea3
commit e535934fc2
1 changed files with 13 additions and 14 deletions

View File

@ -1,5 +1,5 @@
import {Component, Input, Output, EventEmitter, ViewChild} from '@angular/core'; import {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core';
import {Router, ActivatedRoute} from '@angular/router'; import {ActivatedRoute, Router} from '@angular/router';
import {ClaimsService} from '../../claim-utils/service/claims.service'; import {ClaimsService} from '../../claim-utils/service/claims.service';
import {ModalLoading} from '../../../utils/modal/loading.component'; import {ModalLoading} from '../../../utils/modal/loading.component';
import {AlertModal} from '../../../utils/modal/alert'; import {AlertModal} from '../../../utils/modal/alert';
@ -63,6 +63,7 @@ export class ClaimInsertComponent {
private userManagementService: UserManagementService, private _logService: LogService) { private userManagementService: UserManagementService, private _logService: LogService) {
} }
subscriptions = []; subscriptions = [];
timerSubscription;
ngOnDestroy() { ngOnDestroy() {
this.subscriptions.forEach(subscription => { this.subscriptions.forEach(subscription => {
if (subscription instanceof Subscriber) { if (subscription instanceof Subscriber) {
@ -88,13 +89,12 @@ export class ClaimInsertComponent {
}) })
).subscribe(); ).subscribe();
this.subscriptions.push(loadingTimerSubscription); this.subscriptions.push(loadingTimerSubscription);
this.timerSubscription = timer(0, 10000).pipe(
let timerSubscription = timer(0, 10000).pipe(
map(() => { map(() => {
this.getStatus(); // load data contains the http request this.getStatus(); // load data contains the http request
}) })
).subscribe(); ).subscribe();
this.subscriptions.push(timerSubscription); this.subscriptions.push(this.timerSubscription);
}else{ }else{
this.claimsJob = null; this.claimsJob = null;
} }
@ -274,12 +274,12 @@ export class ClaimInsertComponent {
} }
} }
this.saveLocalStorage(); this.saveLocalStorage();
let timerSubscription = timer(0, 10000).pipe( this.timerSubscription = timer(0, 10000).pipe(
map(() => { map(() => {
this.getStatus(); // load data contains the http request this.getStatus(); // load data contains the http request
}) })
).subscribe(); ).subscribe();
this.subscriptions.push(timerSubscription); this.subscriptions.push(this.timerSubscription);
}, },
err => { err => {
err = err && err.error?err.error:err; err = err && err.error?err.error:err;
@ -599,11 +599,10 @@ export class ClaimInsertComponent {
} }
getStatus(){ getStatus(){
if(this.feedRecordsJob && ! (this.feedRecordsJob.status == "COMPLETE" || this.feedRecordsJob.status == "ERROR") ) { if(this.feedRecordsJob && ! (this.feedRecordsJob.status == "COMPLETE" || this.feedRecordsJob.status == "FAILED") ) {
this.subscriptions.push(this.claimService.getStatus(this.feedRecordsJob.id, this.properties.claimsAPIURL).subscribe(data => { this.subscriptions.push(this.claimService.getStatus(this.feedRecordsJob.id, this.properties.claimsAPIURL).subscribe(data => {
this.feedRecordsJob = data.data; this.feedRecordsJob = data.data;
// console.log("feed", this.feedRecordsJob.status); if (this.feedRecordsJob.status == "COMPLETE" || this.feedRecordsJob.status == "FAILED") {
if (this.feedRecordsJob.status == "COMPLETE" || data.data.status == "ERROR") {
this.insertedRecords = this.feedRecordsJob.insertedIds; this.insertedRecords = this.feedRecordsJob.insertedIds;
this.errorInRecords = this.feedRecordsJob.errorInClaims; this.errorInRecords = this.feedRecordsJob.errorInClaims;
} }
@ -622,8 +621,8 @@ export class ClaimInsertComponent {
if(this.claimsJob) { if(this.claimsJob) {
this.subscriptions.push(this.claimService.getStatus(this.claimsJob.id, this.properties.claimsAPIURL).subscribe(data => { this.subscriptions.push(this.claimService.getStatus(this.claimsJob.id, this.properties.claimsAPIURL).subscribe(data => {
this.claimsJob = data.data; this.claimsJob = data.data;
// console.log("claim: ", this.claimsJob.status, this.feedRecordsJob.status?this.feedRecordsJob.status:" no feed job"); if ((this.claimsJob.status == "COMPLETE" || this.claimsJob.status == "FAILED") &&
if ((this.claimsJob.status == "COMPLETE" || data.data.status == "ERROR") && ( !this.feedRecordsJob || (this.feedRecordsJob.status == "COMPLETE" || data.data.status == "ERROR")) ) { ( !this.feedRecordsJob || (this.feedRecordsJob.status == "COMPLETE" || data.data.status == "FAILED"))) {
this.insertedClaims = this.claimsJob.insertedIds; this.insertedClaims = this.claimsJob.insertedIds;
this.errorInClaims = this.claimsJob.errorInClaims; this.errorInClaims = this.claimsJob.errorInClaims;
@ -636,7 +635,7 @@ export class ClaimInsertComponent {
this.errors.push(error); this.errors.push(error);
} }
this.afterclaimsInsertion(); this.afterclaimsInsertion();
this.timerSubscription.unsubscribe();
} }
}, err => { }, err => {