import {createReducer} from 'redux-starter-kit';
import {
  setAllowDownload,
  SET_DOWNLOAD_BEGIN,
  setDownloadEnd,
  setDownloadProgress
} from '../actions/download_actions';

const defaultDownloadState = {
  DownloadActive: false,
  DownloadingDependency: false,
  DownloadingRelease: false,
  DownloadingUpgrade: false,
  DownloadName: '',
  DownloadProgress: 0.0,
  DownloadResult: null,
  DownloadType: null,
};

export const downloadReducer = createReducer({
  ...defaultDownloadState,
  AllowDownload: false,
}, {
  [setAllowDownload]: (state, action) => {
    return {
      ...state,
      AllowDownload: action.payload,
    };
  },
  [SET_DOWNLOAD_BEGIN]: (state, action) => {
    return {
      ...state,
      ...defaultDownloadState,
      DownloadActive: true,
      DownloadName: action.payload.name,
      DownloadType: action.payload.type,
      DownloadURL: action.payload.url,
    }
  },
  [setDownloadEnd]: (state, action) => {
    return {
      ...state,
      ...defaultDownloadState,
      DownloadResult: action.payload,
    };
  },
  [setDownloadProgress]: (state, action) => {
    return {
      ...state,
      DownloadProgress: action.payload,
    }
  }
});