export function reducer()

in src/app/customers/store/catalogs/catalog.reducer.ts [36:104]


export function reducer(state: State = initialState, action: catalogActions.Actions): State {

  switch (action.type) {

    case catalogActions.LOAD: {
      const catalog: Catalog = action.payload;

      return Object.assign({}, state, {
        catalog,
        loadedAt: Date.now()
      });
    }

    case catalogActions.CREATE_SUCCESS: {
      const catalog: Catalog = action.payload.catalog;

      return Object.assign({}, state, {
        catalog,
        loadedAt: state.loadedAt
      });
    }

    case catalogActions.DELETE_SUCCESS: {
      return initialState;
    }

    case catalogActions.SELECT_FIELD: {
      return Object.assign({}, state, {
        selectedFieldIdentifier: action.payload
      });
    }

    case catalogActions.UPDATE_FIELD_SUCCESS: {
      const payload = action.payload;
      const updatedField: Field = payload.field;

      const catalog = Object.assign({}, state.catalog, {
        fields: state.catalog.fields.map(field =>
          field.identifier === updatedField.identifier ? updatedField : field
        )
      });

      return Object.assign({}, state, {
        catalog,
        loadedAt: state.loadedAt
      });
    }

    case catalogActions.DELETE_FIELD_SUCCESS: {
      const payload = action.payload;
      const deletedField: Field = payload.field;

      const catalog = Object.assign({}, state.catalog, {
        fields: state.catalog.fields.filter(field =>
          field.identifier !== deletedField.identifier
        )
      });

      return Object.assign({}, state, {
        catalog,
        loadedAt: state.loadedAt
      });
    }

    default: {
      return state;
    }
  }
}