/* * Copyright (c) 2015-2021 MinIO, Inc. * * This file is part of MinIO Object Storage stack * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ import * as uploadsActions from "./actions" const add = (files, action) => ({ ...files, [action.slug]: { loaded: 0, size: action.size, name: action.name } }) const updateProgress = (files, action) => ({ ...files, [action.slug]: { ...files[action.slug], loaded: action.loaded } }) const stop = (files, action) => { const newFiles = Object.assign({}, files) delete newFiles[action.slug] return newFiles } export default (state = { files: {}, showAbortModal: false }, action) => { switch (action.type) { case uploadsActions.ADD: return { ...state, files: add(state.files, action) } case uploadsActions.UPDATE_PROGRESS: return { ...state, files: updateProgress(state.files, action) } case uploadsActions.STOP: return { ...state, files: stop(state.files, action) } case uploadsActions.SHOW_ABORT_MODAL: return { ...state, showAbortModal: action.show } default: return state } }