Skip to content
Snippets Groups Projects
Select Git revision
  • 3e1e4abb7ae6eeecab5e2d179449e999121b6c2a
  • master default protected
  • 1.3.1
  • 1.3.0
  • 1.2.0
  • 1.1.5
  • 1.1.4
  • 1.1.3
  • 1.1.2
  • 1.1.1
  • 1.1.0
  • 1.0.19
  • 1.0.18
  • 1.0.17
  • 1.0.16
  • 1.0.15
  • 1.0.14
  • 1.0.13
  • 1.0.12
  • 1.0.10
  • 1.0.9
  • 1.0.8
22 results

HomeworksReducer.js

Blame
  • Forked from KSZK / DevTeam / kszkepzes / old / kszkepzes-frontend
    Source project has a limited visibility.
    HomeworksReducer.js 1.82 KiB
    /* eslint-disable no-case-declarations */
    import {
      ADD_SOLUTION,
      ADD_TASK,
      CORRECT_SOLUTION,
      DELETE_TASK,
      EDIT_TASK,
      GET_DOCUMENTS,
      GET_PROFILES,
      GET_SOLUTIONS,
      GET_TASKS,
    } from '../actions/types';
    
    const INITIAL_STATE = {
      id: 0,
      tasks: [],
      solutions: [],
      profiles: [],
      documents: [],
    };
    
    export default (state = INITIAL_STATE, action) => {
      switch (action.type) {
        case GET_TASKS:
          return { ...state, tasks: action.payload };
        case GET_SOLUTIONS:
          return { ...state, solutions: action.payload };
        case CORRECT_SOLUTION:
          const modifiedSolution = state.solutions.find(
            (sol) => sol.id === action.payload.id
          );
          const modifiedSolutions = state.solutions.slice();
          modifiedSolutions.splice(
            state.solutions.indexOf(modifiedSolution),
            1,
            action.payload
          );
          return { ...state, solutions: [...modifiedSolutions] };
        case ADD_SOLUTION:
          return {
            ...state,
            solutions: [action.payload, ...state.solutions],
            id: action.payload.id,
          };
        case ADD_TASK:
          return { ...state, tasks: [action.payload, ...state.tasks] };
        case DELETE_TASK:
          return {
            ...state,
            tasks: [
              ...state.tasks.slice(0, state.tasks.indexOf(action.payload)),
              ...state.tasks.slice(state.tasks.indexOf(action.payload) + 1),
            ],
          };
        case EDIT_TASK:
          return {
            ...state,
            tasks: [
              ...state.tasks.map((task) => {
                if (task.id !== action.payload.id) {
                  return task;
                }
                return action.payload;
              }),
            ],
          };
        case GET_PROFILES:
          return { ...state, profiles: action.payload };
        case GET_DOCUMENTS:
          return { ...state, documents: action.payload };
        default:
          return state;
      }
    };