import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { TimerService } from '../services/timer.service';
-import { filter } from 'rxjs/operators';
+import { filter, first } from 'rxjs/operators';
import { SummaryService } from '../services/summary.service';
import { Router } from '@angular/router';
startClusterTokenStatusPolling() {
let clustersTokenMap = new Map<string, { token: string; user: string }>();
- const dataSubscription = this.subscribe((resp: any) => {
+ const dataSubscription = this.subscribeOnce((resp: any) => {
const clustersConfig = resp['config'];
let tempMap = new Map<string, { token: string; user: string }>();
if (clustersConfig) {
}
refreshTokenStatus() {
- this.subscribe((resp: any) => {
+ this.subscribeOnce((resp: any) => {
const clustersConfig = resp['config'];
let tempMap = this.getTempMap(clustersConfig);
return this.checkTokenStatus(tempMap).subscribe(this.getClusterTokenStatusObserver());
});
}
+ subscribeOnce(next: (data: any) => void, error?: (error: any) => void) {
+ return this.msData$
+ .pipe(
+ filter((value) => !!value),
+ first()
+ )
+ .subscribe(next, error);
+ }
+
subscribe(next: (data: any) => void, error?: (error: any) => void) {
return this.msData$.pipe(filter((value) => !!value)).subscribe(next, error);
}