film-exif/src/App.js

83 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-04-12 21:57:16 -04:00
import * as _ from 'lodash';
import { Component } from 'inferno';
2018-04-03 15:19:45 -04:00
import { BrowserRouter, Link, NavLink } from 'inferno-router';
2018-05-03 15:23:48 -04:00
import { Loader } from '//components';
2018-04-03 15:19:45 -04:00
import {
2018-04-03 21:47:41 -04:00
Container,
2018-04-03 15:19:45 -04:00
Nav,
Navbar,
NavbarBrand,
NavItem,
2018-05-03 15:23:48 -04:00
} from '//components/Bootstrap';
import { Routes } from '//Routes';
2018-03-30 21:30:22 -04:00
2018-04-12 21:57:16 -04:00
export class App extends Component {
constructor (props) {
super(props);
this.state = {
webSocketLoaded: false,
};
_.bindAll(this, [
'onWebSocketOpen',
'onWebSocketClose',
]);
}
componentDidMount () {
2018-04-17 14:12:55 -04:00
window.clientWS = new WebSocket('ws://localhost:65432/');
2018-04-12 21:57:16 -04:00
window.clientWS.addEventListener('open', this.onWebSocketOpen);
window.clientWS.addEventListener('message', console);
window.clientWS.addEventListener('close', this.onWebSocketClose);
2018-04-20 16:55:03 -04:00
console.info(this.context);
2018-04-12 21:57:16 -04:00
}
componentWillUnmount () {
if (window.clientWS) {
window.clientWS.close();
}
}
onWebSocketOpen () {
this.setState({
2018-05-03 15:23:48 -04:00
webSocketLoaded: true
2018-04-12 21:57:16 -04:00
});
2018-04-13 23:28:55 -04:00
window.clientWS.onmessage = message => {
console.info(JSON.parse(message.data));
};
2018-04-12 21:57:16 -04:00
}
onWebSocketClose () {
console.log('WebSocket closed');
}
render () {
return (
<BrowserRouter>
<Container className="full-height" tag="bs-container">
<Navbar className="static-top" color="dark" dark expandable="sm">
<NavbarBrand to="/" tag={Link}>Film Exif</NavbarBrand>
<Nav fill pills>
<NavItem>
<NavLink className="nav-link" to="/camera/list">Cameras</NavLink>
</NavItem>
<NavItem>
<NavLink className="nav-link" to="/film/add">Films</NavLink>
</NavItem>
<NavItem>
<NavLink className="nav-link" to="/oops">Oops</NavLink>
</NavItem>
</Nav>
</Navbar>
<Routes />
<Loader title="Connecting to WebSocket" hidden={this.state.webSocketLoaded} />
</Container>
</BrowserRouter>
);
}
}