2017-08-26 01:34:04 +02:00
|
|
|
import React, { Component } from 'react';
|
2017-09-08 04:06:49 +02:00
|
|
|
import { connect } from 'react-redux';
|
2017-09-07 11:35:15 +02:00
|
|
|
import {
|
|
|
|
Card,
|
|
|
|
CardHeader,
|
|
|
|
CardBlock,
|
|
|
|
FormGroup,
|
|
|
|
Label,
|
|
|
|
Input
|
|
|
|
} from 'reactstrap';
|
|
|
|
import { initialize } from '..';
|
|
|
|
|
2017-09-08 04:06:49 +02:00
|
|
|
class ConnectionOverlay extends Component {
|
2017-09-07 11:35:15 +02:00
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
this.state = {
|
|
|
|
uri: "ws://127.0.0.1:8412",
|
|
|
|
autoconnect: false,
|
|
|
|
connecting: false
|
|
|
|
};
|
|
|
|
// TODO: "connecting..." UI
|
|
|
|
// TODO: autoconnect
|
|
|
|
// TODO: gracefully handle dis/reconnections
|
|
|
|
}
|
2017-08-26 01:34:04 +02:00
|
|
|
|
|
|
|
render() {
|
2017-09-08 04:06:49 +02:00
|
|
|
const { socket } = this.props;
|
|
|
|
if (socket.connected) {
|
|
|
|
return null;
|
|
|
|
}
|
2017-09-07 11:35:15 +02:00
|
|
|
const { uri, autoconnect } = this.state;
|
2017-08-26 01:34:04 +02:00
|
|
|
return (
|
2017-09-07 11:35:15 +02:00
|
|
|
<div className="connection-overlay">
|
|
|
|
<Card>
|
|
|
|
<CardHeader>Connect to synapse</CardHeader>
|
|
|
|
<CardBlock>
|
|
|
|
<FormGroup>
|
|
|
|
<Label for="socket-uri">Server URI</Label>
|
|
|
|
<Input
|
|
|
|
id="socket-uri"
|
|
|
|
value={uri}
|
|
|
|
onChange={e => this.setState({ uri: e.target.value })}
|
|
|
|
/>
|
|
|
|
</FormGroup>
|
|
|
|
<FormGroup>
|
|
|
|
<Label for="autoconnect" check>
|
|
|
|
<Input
|
|
|
|
id="autoconnect"
|
|
|
|
type="checkbox"
|
|
|
|
checked={autoconnect}
|
|
|
|
onChange={e => this.setState({ autoconnect: !autoconnect })}
|
|
|
|
check
|
|
|
|
/> Autoconnect to this server
|
|
|
|
</Label>
|
|
|
|
</FormGroup>
|
|
|
|
<button
|
|
|
|
className="btn btn-primary"
|
|
|
|
onClick={() => initialize(this.state.uri)}
|
|
|
|
>Connect</button>
|
|
|
|
</CardBlock>
|
|
|
|
</Card>
|
|
|
|
</div>
|
2017-08-26 01:34:04 +02:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2017-09-08 04:06:49 +02:00
|
|
|
|
|
|
|
export default connect(state => ({ socket: state.socket }))(ConnectionOverlay);
|