-// Copyright (C) The Arvados Authors. All rights reserved.
-//
-// SPDX-License-Identifier: AGPL-3.0
-
-import { ResourcesDataActions, resourcesDataActions } from "~/store/resources-data/resources-data-actions";
-import { getNodeDescendantsIds, TREE_ROOT_ID } from "~/models/tree";
-import { CollectionFileType } from "~/models/collection-file";
-
-export interface ResourceData {
- fileCount: number;
- fileSize: number;
-}
-
-export type ResourcesDataState = {
- [key: string]: ResourceData
-};
-
-export const resourcesDataReducer = (state: ResourcesDataState = {}, action: ResourcesDataActions) =>
- resourcesDataActions.match(action, {
- SET_FILES: ({uuid, files}) => {
- const flattenFiles = getNodeDescendantsIds(TREE_ROOT_ID)(files).map(id => files[id]);
- const [fileSize, fileCount] = flattenFiles.reduce(([size, cnt], f) =>
- f && f.value.type === CollectionFileType.FILE
- ? [size + f.value.size, cnt + 1]
- : [size, cnt]
- , [0, 0]);
- return {
- ...state,
- [uuid]: { fileCount, fileSize }
- };
- },
- default: () => state,
- });