1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { RootState } from '~/store/store';
6 import { Dispatch } from 'redux';
7 import { connect } from 'react-redux';
8 import { startLinking, linkAccount, linkAccountPanelActions, cancelLinking } from '~/store/link-account-panel/link-account-panel-actions';
9 import { LinkAccountType } from '~/models/link-account';
12 LinkAccountPanelRootDataProps,
13 LinkAccountPanelRootActionProps
14 } from '~/views/link-account-panel/link-account-panel-root';
16 const mapStateToProps = (state: RootState): LinkAccountPanelRootDataProps => {
18 remoteHostsConfig: state.auth.remoteHostsConfig,
19 hasRemoteHosts: Object.keys(state.auth.remoteHosts).length > 1 && state.auth.loginCluster === "",
20 selectedCluster: state.linkAccountPanel.selectedCluster,
21 localCluster: state.auth.localCluster,
22 loginCluster: state.auth.loginCluster,
23 targetUser: state.linkAccountPanel.targetUser,
24 userToLink: state.linkAccountPanel.userToLink,
25 status: state.linkAccountPanel.status,
26 error: state.linkAccountPanel.error,
27 isProcessing: state.linkAccountPanel.isProcessing
31 const mapDispatchToProps = (dispatch: Dispatch): LinkAccountPanelRootActionProps => ({
32 startLinking: (type: LinkAccountType) => dispatch<any>(startLinking(type)),
33 cancelLinking: () => dispatch<any>(cancelLinking(true)),
34 linkAccount: () => dispatch<any>(linkAccount()),
35 setSelectedCluster: (selectedCluster: string) => dispatch<any>(linkAccountPanelActions.SET_SELECTED_CLUSTER({ selectedCluster }))
38 export const LinkAccountPanel = connect(mapStateToProps, mapDispatchToProps)(LinkAccountPanelRoot);