All files / app/codeCharta/state/effects/resetSelectedEdgeMetricWhenItDoesntExistAnymore resetSelectedEdgeMetricWhenItDoesntExistAnymore.effect.ts

100% Statements 16/16
100% Branches 4/4
100% Functions 6/6
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 241x 1x 1x 1x   1x 1x 1x     1x 3x   3x 3x   6x 2x   2x        
import { Injectable } from "@angular/core"
import { createEffect } from "@ngrx/effects"
import { Store } from "@ngrx/store"
import { distinctUntilChanged, filter, map, withLatestFrom } from "rxjs"
import { CcState } from "../../../codeCharta.model"
import { metricDataSelector } from "../../selectors/accumulatedData/metricData/metricData.selector"
import { setEdgeMetric } from "../../store/dynamicSettings/edgeMetric/edgeMetric.actions"
import { edgeMetricSelector } from "../../store/dynamicSettings/edgeMetric/edgeMetric.selector"
 
@Injectable()
export class ResetSelectedEdgeMetricWhenItDoesntExistAnymoreEffect {
    constructor(private store: Store<CcState>) {}
 
    resetSelectedEdgeMetricWhenItDoesntExistAnymore$ = createEffect(() =>
        this.store.select(metricDataSelector).pipe(
            withLatestFrom(this.store.select(edgeMetricSelector)),
            filter(([metricData, selectedEdgeMetric]) => !metricData.edgeMetricData.some(metric => metric.name === selectedEdgeMetric)),
            map(([metricData]) => metricData.edgeMetricData[0]?.name),
            distinctUntilChanged(),
            map(newEdgeMetric => setEdgeMetric({ value: newEdgeMetric }))
        )
    )
}