From 8e8adaa8beb42a75a52eae0be74c8e4eb2d68657 Mon Sep 17 00:00:00 2001 From: Coenen Benjamin Date: Mon, 24 Dec 2018 15:44:52 +0100 Subject: [PATCH] fix(ui): don't fetch /timeline/filter if you are not connected (#3764) Signed-off-by: Benjamin Coenen Linked to a report from [Gitter](https://gitter.im/ovh-cds/Lobby) @ovh/cds --- ui/src/app/app.service.ts | 7 ++-- ui/src/app/service/timeline/timeline.store.ts | 14 ++++---- ui/src/app/views/home/home.component.ts | 22 ++++++------ .../home/timeline/home.timeline.component.ts | 34 ++++++++++++------- 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/ui/src/app/app.service.ts b/ui/src/app/app.service.ts index 3eba3ef969..2ba34e0ee0 100644 --- a/ui/src/app/app.service.ts +++ b/ui/src/app/app.service.ts @@ -36,9 +36,10 @@ export class AppService { private _wfStore: WorkflowStore, private _broadcastStore: BroadcastStore, private _timelineStore: TimelineStore, private _toast: ToastService, private _workflowRunService: WorkflowRunService) { this.routeParams = this._routerService.getRouteParams({}, this._routeActivated); - this.filterSub = this._timelineStore.getFilter().subscribe(f => { - this.filter = f; - }); + } + + initFilter(filter: TimelineFilter) { + this.filter = cloneDeep(filter); } updateRoute(params: {}) { diff --git a/ui/src/app/service/timeline/timeline.store.ts b/ui/src/app/service/timeline/timeline.store.ts index 2b408bd9a0..eefaab3945 100644 --- a/ui/src/app/service/timeline/timeline.store.ts +++ b/ui/src/app/service/timeline/timeline.store.ts @@ -1,10 +1,10 @@ -import {Injectable} from '@angular/core'; -import {List} from 'immutable'; -import {BehaviorSubject, Observable} from 'rxjs/index'; -import {map} from 'rxjs/operators'; -import {Event} from '../../model/event.model'; -import {TimelineFilter} from '../../model/timeline.model'; -import {TimelineService} from './timeline.service'; +import { Injectable } from '@angular/core'; +import { List } from 'immutable'; +import { BehaviorSubject, Observable } from 'rxjs/index'; +import { map } from 'rxjs/operators'; +import { Event } from '../../model/event.model'; +import { TimelineFilter } from '../../model/timeline.model'; +import { TimelineService } from './timeline.service'; @Injectable() export class TimelineStore { diff --git a/ui/src/app/views/home/home.component.ts b/ui/src/app/views/home/home.component.ts index ebcb5400f6..fd94323271 100644 --- a/ui/src/app/views/home/home.component.ts +++ b/ui/src/app/views/home/home.component.ts @@ -1,12 +1,12 @@ -import {Component} from '@angular/core'; -import {Broadcast} from 'app/model/broadcast.model'; -import {NavbarProjectData} from 'app/model/navbar.model'; -import {Subscription} from 'rxjs'; -import {User} from '../../model/user.model'; -import {AuthentificationStore} from '../../service/auth/authentification.store'; -import {BroadcastStore} from '../../service/broadcast/broadcast.store'; -import {NavbarService} from '../../service/navbar/navbar.service'; -import {AutoUnsubscribe} from '../../shared/decorator/autoUnsubscribe'; +import { Component } from '@angular/core'; +import { Broadcast } from 'app/model/broadcast.model'; +import { NavbarProjectData } from 'app/model/navbar.model'; +import { Subscription } from 'rxjs'; +import { User } from '../../model/user.model'; +import { AuthentificationStore } from '../../service/auth/authentification.store'; +import { BroadcastStore } from '../../service/broadcast/broadcast.store'; +import { NavbarService } from '../../service/navbar/navbar.service'; +import { AutoUnsubscribe } from '../../shared/decorator/autoUnsubscribe'; @Component({ selector: 'app-home', @@ -26,8 +26,8 @@ export class HomeComponent { _broadcastSub: Subscription; constructor( - private _navbarService: NavbarService, - private _broadcastService: BroadcastStore, + private _navbarService: NavbarService, + private _broadcastService: BroadcastStore, private _authStore: AuthentificationStore ) { this.user = this._authStore.getUser(); diff --git a/ui/src/app/views/home/timeline/home.timeline.component.ts b/ui/src/app/views/home/timeline/home.timeline.component.ts index 7b2991cfb2..17e543d095 100644 --- a/ui/src/app/views/home/timeline/home.timeline.component.ts +++ b/ui/src/app/views/home/timeline/home.timeline.component.ts @@ -1,12 +1,14 @@ -import {Component, OnInit} from '@angular/core'; -import {TranslateService} from '@ngx-translate/core'; -import {Subscription} from 'rxjs/Subscription'; -import {Event} from '../../../model/event.model'; -import {PipelineStatus} from '../../../model/pipeline.model'; -import {ProjectFilter, TimelineFilter} from '../../../model/timeline.model'; -import {TimelineStore} from '../../../service/timeline/timeline.store'; -import {AutoUnsubscribe} from '../../../shared/decorator/autoUnsubscribe'; -import {ToastService} from '../../../shared/toast/ToastService'; +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { AppService } from 'app/app.service'; +import { AuthentificationStore } from 'app/service/services.module'; +import { Subscription } from 'rxjs/Subscription'; +import { Event } from '../../../model/event.model'; +import { PipelineStatus } from '../../../model/pipeline.model'; +import { ProjectFilter, TimelineFilter } from '../../../model/timeline.model'; +import { TimelineStore } from '../../../service/timeline/timeline.store'; +import { AutoUnsubscribe } from '../../../shared/decorator/autoUnsubscribe'; +import { ToastService } from '../../../shared/toast/ToastService'; @Component({ selector: 'app-home-timeline', @@ -28,15 +30,23 @@ export class HomeTimelineComponent implements OnInit { filter: TimelineFilter; filterSub: Subscription; - constructor(private _timelineStore: TimelineStore, private _translate: TranslateService, - private _toast: ToastService) { + constructor( + private _authStore: AuthentificationStore, + private _appService: AppService, + private _timelineStore: TimelineStore, + private _translate: TranslateService, + private _toast: ToastService + ) { this.filter = new TimelineFilter(); } ngOnInit(): void { + if (!this._authStore.isConnected) { + return; + } this.filterSub = this._timelineStore.getFilter().subscribe(f => { this.filter = f; - + this._appService.initFilter(this.filter); if (this.timelineSub) { this.timelineSub.unsubscribe(); }