tahnik/devRantron

View on GitHub
app/src/js/reducers/columns.js

Summary

Maintainability
A
30 mins
Test Coverage
import DEFAULT_STATES from '../consts/default_states';
import { COLUMNS, COLUMN } from '../consts/types';

export default (state = DEFAULT_STATES.columns, action) => {
  switch (action.type) {
    case COLUMN.FETCH: {
      const reqColumn = state.filter(column => column.id === action.column.id)[0];
      const index = state.indexOf(reqColumn);
      const newColumns = state.slice();
      if (reqColumn) {
        newColumns[index] = action.column;
      }
      return newColumns;
    }
    case COLUMNS.ADD: {
      return [...state, action.column];
    }
    case COLUMN.UPDATE_SCROLL: {
      const reqColumn = state.filter(column => column.id === action.id)[0];
      const index = state.indexOf(reqColumn);
      const newColumns = state.slice();
      const newColumn = { ...reqColumn };
      newColumn.scrollHeight = action.value;
      newColumns[index] = newColumn;
      return newColumns;
    }
    case COLUMNS.REMOVE: {
      const reqColumn = state.filter(column => column.id === action.id)[0];
      const index = state.indexOf(reqColumn);
      const newColumns = state.slice();
      if (reqColumn) {
        newColumns.splice(index, 1);
      }
      return newColumns;
    }
    case COLUMNS.RESET: {
      return DEFAULT_STATES.columns;
    }
    default:
      return state;
  }
};