1 import { Injectable } from '@angular/core';
3 import { Observable, timer } from 'rxjs';
4 import { observeOn, shareReplay, switchMap } from 'rxjs/operators';
6 import { whenPageVisible } from '../rxjs/operators/page-visibilty.operator';
7 import { NgZoneSchedulerService } from './ngzone-scheduler.service';
12 export class TimerService {
13 readonly DEFAULT_REFRESH_INTERVAL = 5000;
14 readonly DEFAULT_DUE_TIME = 0;
15 constructor(private ngZone: NgZoneSchedulerService) {}
18 next: () => Observable<any>,
19 refreshInterval: number = this.DEFAULT_REFRESH_INTERVAL,
20 dueTime: number = this.DEFAULT_DUE_TIME
22 return timer(dueTime, refreshInterval, this.ngZone.leave).pipe(
23 observeOn(this.ngZone.enter),
25 shareReplay({ refCount: true, bufferSize: 1 }),