1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { Dispatch } from "redux";
6 import { bindDataExplorerActions } from '~/store/data-explorer/data-explorer-action';
7 import { RootState } from '~/store/store';
8 import { ServiceRepository } from "~/services/services";
9 import { navigateToRepositories } from "~/store/navigation/navigation-action";
10 import { unionize, ofType, UnionOf } from "~/common/unionize";
12 export const repositoriesActions = unionize({
13 SET_REPOSITORIES: ofType<any>(),
16 export type RepositoriesActions = UnionOf<typeof repositoriesActions>;
18 export const REPOSITORIES_PANEL = 'repositoriesPanel';
20 const repositoriesBindedActions = bindDataExplorerActions(REPOSITORIES_PANEL);
22 export const openRepositoriesPanel = () =>
23 async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
24 dispatch<any>(navigateToRepositories);
27 export const loadRepositoriesData = () =>
28 async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
29 const repositories = await services.repositoriesService.list();
30 dispatch(repositoriesActions.SET_REPOSITORIES(repositories.items));
33 export const loadRepositoriesPanel = () =>
34 (dispatch: Dispatch) => {
35 dispatch(repositoriesBindedActions.REQUEST_ITEMS());