add <Config> higher order component heavily inspired by @nfcampos (#59)

This commit is contained in:
Guillermo Rauch 2016-07-07 08:15:03 -07:00
parent 95d2392f35
commit 318f684da4
2 changed files with 38 additions and 1 deletions

36
app/config.js Normal file
View file

@ -0,0 +1,36 @@
import React from 'react';
import { ipcRenderer, remote } from 'electron';
const config = remote.require('./config');
export default class Config extends React.Component {
constructor () {
super();
this.state = {
config: config.get()
};
this.onChange = this.onChange.bind(this);
}
onChange () {
new Notification('HyperTerm configuration reloaded!');
this.setState({ config: config.get() });
}
componentDidMount () {
ipcRenderer.on('config change', this.onChange);
}
// passes `config` as props to the decorated component
render () {
const child = React.Children.only(this.props.children);
const { config } = this.state;
return React.cloneElement(child, { config });
}
componentWillUnmount () {
ipcRenderer.removeListener('config change', this.onChange);
}
}

View file

@ -1,8 +1,9 @@
import { render } from 'react-dom';
import HyperTerm from './hyperterm';
import React from 'react';
import Config from './config';
require('./css/hyperterm.css');
require('./css/tabs.css');
render(<HyperTerm />, document.getElementById('mount'));
render(<Config><HyperTerm /></Config>, document.getElementById('mount'));