// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import { unionize, ofType, UnionOf } from "common/unionize"; import { Dispatch } from "redux"; import { RootState } from 'store/store'; export interface UploadFile { id: number; file: File; prevLoaded: number; loaded: number; total: number; startTime: number; prevTime: number; currentTime: number; } export const fileUploaderActions = unionize({ CLEAR_UPLOAD: ofType(), SET_UPLOAD_FILES: ofType(), UPDATE_UPLOAD_FILES: ofType(), SET_UPLOAD_PROGRESS: ofType<{ fileId: number, loaded: number, total: number, currentTime: number }>(), START_UPLOAD: ofType(), DELETE_UPLOAD_FILE: ofType(), CANCEL_FILES_UPLOAD: ofType(), }); export type FileUploaderAction = UnionOf; export const getFileUploaderState = () => (dispatch: Dispatch, getState: () => RootState) => { return getState().fileUploader; };