@@ -3,7 +3,7 @@ import { ActivatedRoute } from '@angular/router';
3
3
import { TranslateService } from '@ngx-translate/core' ;
4
4
import { Store } from '@ngxs/store' ;
5
5
import { cloneDeep } from 'lodash' ;
6
- import { filter , first } from 'rxjs/operators' ;
6
+ import { filter } from 'rxjs/operators' ;
7
7
import { Subscription } from 'rxjs/Subscription' ;
8
8
import { Broadcast , BroadcastEvent } from './model/broadcast.model' ;
9
9
import { Event , EventType } from './model/event.model' ;
@@ -16,14 +16,15 @@ import { BroadcastStore } from './service/broadcast/broadcast.store';
16
16
import { RouterService , TimelineStore } from './service/services.module' ;
17
17
import { WorkflowRunService } from './service/workflow/run/workflow.run.service' ;
18
18
import { WorkflowEventStore } from './service/workflow/workflow.event.store' ;
19
- import { WorkflowStore } from './service/workflow/workflow.store' ;
20
19
import { ToastService } from './shared/toast/ToastService' ;
21
20
import { DeleteFromCacheApplication , ExternalChangeApplication , ResyncApplication } from './store/applications.action' ;
22
21
import { ApplicationsState , ApplicationsStateModel } from './store/applications.state' ;
23
22
import { DeleteFromCachePipeline , ExternalChangePipeline , ResyncPipeline } from './store/pipelines.action' ;
24
23
import { PipelinesState , PipelinesStateModel } from './store/pipelines.state' ;
25
24
import * as projectActions from './store/project.action' ;
26
25
import { ProjectState , ProjectStateModel } from './store/project.state' ;
26
+ import { DeleteFromCacheWorkflow , ExternalChangeWorkflow , ResyncWorkflow } from './store/workflows.action' ;
27
+ import { WorkflowsState , WorkflowsStateModel } from './store/workflows.state' ;
27
28
28
29
@Injectable ( )
29
30
export class AppService {
@@ -40,7 +41,6 @@ export class AppService {
40
41
private _authStore : AuthentificationStore ,
41
42
private _translate : TranslateService ,
42
43
private _workflowEventStore : WorkflowEventStore ,
43
- private _wfStore : WorkflowStore ,
44
44
private _broadcastStore : BroadcastStore ,
45
45
private _timelineStore : TimelineStore ,
46
46
private _toast : ToastService ,
@@ -214,8 +214,8 @@ export class AppService {
214
214
if ( ! event || ! event . type_event ) {
215
215
return
216
216
}
217
- let pipKey = event . project_key + '-' + event . pipeline_name ;
218
217
218
+ const pipKey = event . project_key + '-' + event . pipeline_name ;
219
219
this . store . selectOnce ( PipelinesState ) . subscribe ( ( pips : PipelinesStateModel ) => {
220
220
if ( ! pips || ! pips . pipelines || ! pips . pipelines [ pipKey ] ) {
221
221
return ;
@@ -260,37 +260,46 @@ export class AppService {
260
260
if ( ! event || ! event . type_event ) {
261
261
return
262
262
}
263
- let wfKey = event . project_key + '-' + event . workflow_name ;
264
- this . _wfStore . getWorkflows ( event . project_key ) . pipe ( first ( ) ) . subscribe ( wfs => {
265
- if ( ! wfs ) {
266
- return ;
267
- }
268
-
269
- if ( ! wfs . get ( wfKey ) ) {
270
- return ;
271
- }
272
-
273
- if ( event . type_event === EventType . WORKFLOW_DELETE ) {
274
- this . _wfStore . removeFromStore ( wfKey ) ;
275
- this . store . dispatch ( new projectActions . DeleteWorkflowInProject ( { workflowName : event . workflow_name } ) ) ;
276
- return ;
277
- }
263
+ this . store . selectOnce ( WorkflowsState )
264
+ . pipe ( filter ( ( wfs ) => wfs != null ) )
265
+ . subscribe ( ( wfs : WorkflowsStateModel ) => {
266
+ const wfKey = event . project_key + '-' + event . workflow_name ;
267
+ if ( ! wfs || ! wfs . workflows || ! wfs . workflows [ wfKey ] ) {
268
+ return ;
269
+ }
270
+ if ( event . type_event === EventType . WORKFLOW_DELETE ) {
271
+ this . store . dispatch ( new DeleteFromCacheWorkflow ( {
272
+ projectKey : event . project_key ,
273
+ workflowName : event . workflow_name
274
+ } ) ) ;
275
+ this . store . dispatch ( new projectActions . DeleteWorkflowInProject ( { workflowName : event . workflow_name } ) ) ;
276
+ return ;
277
+ }
278
278
279
- // update workflow
280
- if ( this . routeParams [ 'key' ] && this . routeParams [ 'key' ] === event . project_key
281
- && this . routeParams [ 'workflowName' ] === event . workflow_name ) {
282
- if ( event . username !== this . _authStore . getUser ( ) . username ) {
283
- this . _wfStore . externalModification ( wfKey ) ;
284
- this . _toast . info ( '' , this . _translate . instant ( 'warning_workflow' , { username : event . username } ) ) ;
285
- return
279
+ // update workflow
280
+ if ( this . routeParams [ 'key' ] && this . routeParams [ 'key' ] === event . project_key
281
+ && this . routeParams [ 'workflowName' ] === event . workflow_name ) {
282
+ if ( event . username !== this . _authStore . getUser ( ) . username ) {
283
+ this . store . dispatch ( new ExternalChangeWorkflow ( {
284
+ projectKey : event . project_key ,
285
+ workflowName : event . workflow_name
286
+ } ) ) ;
287
+ this . _toast . info ( '' , this . _translate . instant ( 'warning_workflow' , { username : event . username } ) ) ;
288
+ return ;
289
+ }
290
+ } else {
291
+ this . store . dispatch ( new DeleteFromCacheWorkflow ( {
292
+ projectKey : event . project_key ,
293
+ workflowName : event . workflow_name
294
+ } ) ) ;
295
+ return ;
286
296
}
287
- } else {
288
- this . _wfStore . removeFromStore ( wfKey ) ;
289
- return ;
290
- }
291
297
292
- this . _wfStore . resync ( event . project_key , event . workflow_name ) ;
293
- } ) ;
298
+ this . store . dispatch ( new ResyncWorkflow ( {
299
+ projectKey : event . project_key ,
300
+ workflowName : event . workflow_name
301
+ } ) ) ;
302
+ } ) ;
294
303
}
295
304
296
305
updateWorkflowRunCache ( event : Event ) : void {
0 commit comments