Create AddGroupMembersDialog
[arvados-workbench2.git] / src / store / group-details-panel / group-details-panel-actions.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { bindDataExplorerActions } from '~/store/data-explorer/data-explorer-action';
6 import { Dispatch } from 'redux';
7 import { propertiesActions } from '~/store/properties/properties-actions';
8 import { getProperty } from '~/store/properties/properties';
9 import { Person } from '~/views-components/sharing-dialog/people-select';
10 import { dialogActions } from '~/store/dialog/dialog-actions';
11 import { reset } from 'redux-form';
12
13 export const GROUP_DETAILS_PANEL_ID = 'groupDetailsPanel';
14 export const ADD_GROUP_MEMBERS_DIALOG = 'addGrupMembers';
15 export const ADD_GROUP_MEMBERS_FORM = 'addGrupMembers';
16 export const ADD_GROUP_MEMBERS_USERS_FIELD_NAME = 'users';
17
18
19 export const GroupDetailsPanelActions = bindDataExplorerActions(GROUP_DETAILS_PANEL_ID);
20
21 export const loadGroupDetailsPanel = (groupUuid: string) =>
22     (dispatch: Dispatch) => {
23         dispatch(propertiesActions.SET_PROPERTY({ key: GROUP_DETAILS_PANEL_ID, value: groupUuid }));
24         dispatch(GroupDetailsPanelActions.REQUEST_ITEMS());
25     };
26
27 export const getCurrentGroupDetailsPanelUuid = getProperty<string>(GROUP_DETAILS_PANEL_ID);
28
29 export interface AddGroupMembersFormData {
30     [ADD_GROUP_MEMBERS_USERS_FIELD_NAME]: Person[];
31 }
32
33 export const openAddGroupMembersDialog = () =>
34     (dispatch: Dispatch) => {
35         dispatch(dialogActions.OPEN_DIALOG({ id: ADD_GROUP_MEMBERS_DIALOG, data: {} }));
36         dispatch(reset(ADD_GROUP_MEMBERS_FORM));
37     };