Sha256: 3d2fe74b361fc3bc8fc319eb2de38bf6b4eea915edc058d67652db63052e37db

Contents?: true

Size: 1.12 KB

Versions: 5

Compression:

Stored size: 1.12 KB

Contents

import Immutable from 'seamless-immutable';
import {
  FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST,
  FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS,
  FOREMAN_TASK_DETAILS_STOP_POLLING,
  FOREMAN_TASK_DETAILS_START_POLLING,
} from './TaskDetailsConstants';

const initialState = Immutable({});

export default (state = initialState, action) => {
  const { type, payload } = action;
  let { taskReload, timeoutId } = state;

  switch (type) {
    case FOREMAN_TASK_DETAILS_FETCH_TASK_REQUEST:
      return state.set('loading', true);
    case FOREMAN_TASK_DETAILS_FETCH_TASK_SUCCESS:
      if (payload.state === 'stopped') {
        clearTimeout(state.timeoutId);
        taskReload = false;
        timeoutId = null;
      }
      return state.merge({
        loading: false,
        ...payload,
        taskReload,
        timeoutId,
      });
    case FOREMAN_TASK_DETAILS_STOP_POLLING:
      return state.merge({ taskReload: false, timeoutId: null });
    case FOREMAN_TASK_DETAILS_START_POLLING:
      clearTimeout(state.timeoutId);
      return state.merge({ taskReload: true, timeoutId: payload.timeoutId });
    default:
      return state;
  }
};

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman-tasks-2.0.3 webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js
foreman-tasks-2.0.2 webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js
foreman-tasks-2.0.1 webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js
foreman-tasks-2.0.0 webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js
foreman-tasks-1.2.0 webpack/ForemanTasks/Components/TaskDetails/TaskDetailsReducer.js