import * as React from 'react' import { useState, useCallback, memo } from 'react' import Add from '@material-ui/icons/Add' import Lock from '@material-ui/icons/Lock' import Undo from '@material-ui/icons/Undo' import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import { connectionManagerActions } from '../../actions' import { ConnectionOptions } from '../../model/ConnectionOptions' import { Theme, withStyles } from '@material-ui/core/styles' import { Button, Grid, TextField, Tooltip } from '@material-ui/core' import { QosSelect } from '../QosSelect' import { QoS } from '../../../../backend/src/DataSource/MqttSource' import Subscriptions from './Subscriptions' interface Props { connection: ConnectionOptions classes: any managerActions: typeof connectionManagerActions } const ConnectionSettings = memo(function ConnectionSettings(props: Props) { const [qos, setQos] = useState(0) const [topic, setTopic] = useState('') const { classes } = props const updateSubscription = useCallback( (event: React.ChangeEvent) => setTopic(event.target.value), [] ) const handleChange = useCallback( (name: string) => (event: any) => { props.managerActions.updateConnection(props.connection.id, { [name]: event.target.value, }) }, [] ) return (
) }) const mapDispatchToProps = (dispatch: any) => { return { managerActions: bindActionCreators(connectionManagerActions, dispatch), } } const styles = (theme: Theme) => ({ fullWidth: { width: '100%', }, gridPadding: { padding: '0 12px !important', }, button: { marginTop: theme.spacing(3), float: 'right' as 'right', }, qos: { marginTop: theme.spacing(1), }, }) export default connect(undefined, mapDispatchToProps)(withStyles(styles)(ConnectionSettings))