1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { compose, Dispatch } from 'redux';
6 import { connect } from 'react-redux';
7 import { RootState } from 'store/store';
10 saveSharingDialogChanges,
11 connectSharingDialogProgress,
14 } from 'store/sharing-dialog/sharing-dialog-actions';
15 import { WithDialogProps } from 'store/dialog/with-dialog';
16 import SharingDialogComponent, {
17 SharingDialogDataProps,
18 SharingDialogActionProps
19 } from './sharing-dialog-component';
23 } from 'store/sharing-dialog/sharing-dialog-types';
24 import { WithProgressStateProps } from 'store/progress-indicator/with-progress';
25 import { getDialog } from 'store/dialog/dialog-reducer';
27 type Props = WithDialogProps<string> & WithProgressStateProps;
29 const mapStateToProps = (state: RootState, { working, ...props }: Props): SharingDialogDataProps => {
30 const dialog = getDialog<SharingDialogData>(state.dialog, SHARING_DIALOG_NAME);
33 saveEnabled: hasChanges(state),
35 sharedResourceUuid: dialog?.data.resourceUuid || '',
39 const mapDispatchToProps = (dispatch: Dispatch, { ...props }: Props): SharingDialogActionProps => ({
41 onClose: props.closeDialog,
43 dispatch<any>(saveSharingDialogChanges);
45 onCreateSharingToken: () => {
46 dispatch<any>(createSharingToken);
50 export const SharingDialog = compose(
52 connectSharingDialogProgress,
53 connect(mapStateToProps, mapDispatchToProps)
54 )(SharingDialogComponent);