diff --git a/app/src/components/ConnectionSetup/ProfileList/ConnectionItem.tsx b/app/src/components/ConnectionSetup/ProfileList/ConnectionItem.tsx index c0c3da0..3a0044f 100644 --- a/app/src/components/ConnectionSetup/ProfileList/ConnectionItem.tsx +++ b/app/src/components/ConnectionSetup/ProfileList/ConnectionItem.tsx @@ -1,26 +1,40 @@ -import React from 'react' +import React, { useCallback } from 'react' import { connect } from 'react-redux' import { ListItem, Typography } from '@material-ui/core' import { toMqttConnection, ConnectionOptions } from '../../../model/ConnectionOptions' import { withStyles, Theme } from '@material-ui/core/styles' import { bindActionCreators } from 'redux' -import { connectionManagerActions } from '../../../actions' +import { connectionActions, connectionManagerActions } from '../../../actions' export interface Props { connection: ConnectionOptions - actions: any + actions: { + connection: any + connectionManager: any + } selected: boolean classes: any } const ConnectionItem = (props: Props) => { + const connect = useCallback(() => { + const mqttOptions = toMqttConnection(props.connection) + if (mqttOptions) { + props.actions.connection.connect(mqttOptions, props.connection.id) + } + }, [props.connection, props]) + const connection = props.connection.host && toMqttConnection(props.connection) return ( props.actions.selectConnection(props.connection.id)} + onClick={() => props.actions.connectionManager.selectConnection(props.connection.id)} + onDoubleClick={() => { + props.actions.connectionManager.selectConnection(props.connection.id) + connect() + }} > {props.connection.name || 'mqtt broker'} {connection && connection.url} @@ -30,10 +44,12 @@ const ConnectionItem = (props: Props) => { export const mapDispatchToProps = (dispatch: any) => { return { - actions: bindActionCreators(connectionManagerActions, dispatch), + actions: { + connection: bindActionCreators(connectionActions, dispatch), + connectionManager: bindActionCreators(connectionManagerActions, dispatch), + }, } } - export const connectionItemStyle = (theme: Theme) => ({ name: { width: '100%',