All files / app/codeCharta/state/store/fileSettings/markedPackages markedPackages.reducer.ts

100% Statements 17/17
100% Branches 1/1
100% Functions 3/3
100% Lines 16/16

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 24 25 26 27 28 29 3043x 43x 43x 43x 43x   43x   43x 43x       5x   4x 6x     4x     2x 2x 1x   1x      
import { markPackages, setMarkedPackages, unmarkPackage } from "./markedPackages.actions"
import { removeEntryAtIndexFromArray } from "../../../../util/arrayHelper"
import { addMarkedPackage } from "./util/addMarkedPackage"
import { findIndexOfMarkedPackageOrParent } from "./util/findIndexOfMarkedPackageOrParent"
import { createReducer, on } from "@ngrx/store"
import { MarkedPackage } from "../../../../codeCharta.model"
import { setState } from "../../util/setState.reducer.factory"
 
export const defaultMarkedPackages: MarkedPackage[] = []
export const markedPackages = createReducer(
    defaultMarkedPackages,
    on(setMarkedPackages, setState(defaultMarkedPackages)),
    on(markPackages, (state, action) => {
        const markedPackagesMap = new Map(state.map(entry => [entry.path, entry]))
 
        for (const markedPackage of action.packages) {
            addMarkedPackage(markedPackagesMap, markedPackage)
        }
 
        return [...markedPackagesMap.values()]
    }),
    on(unmarkPackage, (state, action) => {
        const indexOfPackageToBeUnmarked = findIndexOfMarkedPackageOrParent(state, action.path)
        if (indexOfPackageToBeUnmarked !== -1) {
            return removeEntryAtIndexFromArray(state, indexOfPackageToBeUnmarked)
        }
        return state
    })
)