advanced-tab-and-sample-git-start-for-repositories
[arvados-workbench2.git] / src / store / repositories / repositories-actions.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
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";
11 import { dialogActions } from '~/store/dialog/dialog-actions';
12
13 export const repositoriesActions = unionize({
14     SET_REPOSITORIES: ofType<any>(),
15 });
16
17 export type RepositoriesActions = UnionOf<typeof repositoriesActions>;
18
19 export const REPOSITORIES_PANEL = 'repositoriesPanel';
20 export const REPOSITORIES_SAMPLE_GIT_NAME = 'repositoriesSampleGit';
21
22 export const openRepositoriesSampleGitDialog = () =>
23     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
24         const uuidPrefix = getState().properties.uuidPrefix;
25         dispatch(dialogActions.OPEN_DIALOG({ id: REPOSITORIES_SAMPLE_GIT_NAME, data: { uuidPrefix } }));
26     };
27
28 const repositoriesBindedActions = bindDataExplorerActions(REPOSITORIES_PANEL);
29
30 export const openRepositoriesPanel = () =>
31     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
32         dispatch<any>(navigateToRepositories);
33     };
34
35 export const loadRepositoriesData = () =>
36     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
37         const repositories = await services.repositoriesService.list();
38         dispatch(repositoriesActions.SET_REPOSITORIES(repositories.items));
39     };
40
41 export const loadRepositoriesPanel = () =>
42     (dispatch: Dispatch) => {
43         dispatch(repositoriesBindedActions.REQUEST_ITEMS());
44     };