1
1
import { Injectable } from '@angular/core' ;
2
2
import { ParamMap } from '@angular/router' ;
3
3
import { isEmpty , isNil , omit } from 'lodash-es' ;
4
- import { concat , EMPTY , Observable , ReplaySubject } from 'rxjs' ;
5
- import { catchError , distinctUntilChanged , filter , map , switchMap , take } from 'rxjs/operators' ;
4
+ import { EMPTY , Observable , ReplaySubject } from 'rxjs' ;
5
+ import { catchError , distinctUntilChanged , filter , map , skip , switchMap , take } from 'rxjs/operators' ;
6
6
import { NavigationService , QueryParamObject } from '../navigation/navigation.service' ;
7
7
import { ReplayObservable } from '../utilities/rxjs/rxjs-utils' ;
8
8
import { FixedTimeRange } from './fixed-time-range' ;
@@ -80,8 +80,9 @@ export class TimeRangeService {
80
80
private getPageTimeRangeChanges ( ) : Observable < TimeRange > {
81
81
return this . navigationService . navigation$ . pipe (
82
82
map ( activeRoute => activeRoute . snapshot . queryParamMap ) ,
83
- filter ( queryParamMap => ! isNil ( queryParamMap . get ( TimeRangeService . TIME_RANGE_QUERY_PARAM ) ) ) ,
84
83
distinctUntilChanged ( ( prevParamMap , currParamMap ) => this . shouldNotUpdateTimeRange ( prevParamMap , currParamMap ) ) ,
84
+ skip ( 1 ) , // Skip the first nav, this is handled by initializeTimeRange, but we want to populate prev for distinctUntilChanged
85
+ filter ( queryParamMap => queryParamMap . has ( TimeRangeService . TIME_RANGE_QUERY_PARAM ) ) ,
85
86
map ( currQueryParamMap => {
86
87
const timeRangeQueryParamString = currQueryParamMap . get ( TimeRangeService . TIME_RANGE_QUERY_PARAM ) ;
87
88
@@ -91,7 +92,9 @@ export class TimeRangeService {
91
92
}
92
93
93
94
private initializeTimeRange ( ) : void {
94
- concat ( this . getInitialTimeRange ( ) , this . getPageTimeRangeChanges ( ) ) . subscribe ( timeRange => {
95
+ this . getInitialTimeRange ( ) . subscribe ( timeRangeFromInitialUrl => this . applyTimeRangeChange ( timeRangeFromInitialUrl ) ) ;
96
+
97
+ this . getPageTimeRangeChanges ( ) . subscribe ( timeRange => {
95
98
if ( ! this . timeRangeMatchesCurrentUrl ( timeRange ) ) {
96
99
this . setTimeRangeInUrl ( timeRange ) ;
97
100
} else {
0 commit comments