zepio/app/views/console.js

55 lines
1.1 KiB
JavaScript
Raw Normal View History

2018-12-05 08:32:13 -08:00
// @flow
import React, { Component, Fragment } from 'react';
import { ipcRenderer } from 'electron';
import styled from 'styled-components';
import generateRandomString from '../utils/generate-random-string';
const Wrapper = styled.div`
max-height: 100%;
overflow-y: auto;
`;
2018-12-05 08:32:13 -08:00
type Props = {};
type State = {
log: string,
2018-12-05 08:32:13 -08:00
};
export class ConsoleView extends Component<Props, State> {
scrollView = React.createRef();
2018-12-05 08:32:13 -08:00
state = {
log: '',
2018-12-05 08:32:13 -08:00
};
componentDidMount() {
ipcRenderer.on('zcashd-log', (event, message) => {
this.setState(state => ({
log: `${state.log}\n${message}`,
2018-12-06 12:26:55 -08:00
}));
if (this.scrollView && this.scrollView.current) {
// eslint-disable-next-line
this.scrollView.current.scrollTop = this.scrollView.current.scrollHeight;
}
2018-12-05 08:32:13 -08:00
});
}
render() {
const { log } = this.state;
2018-12-05 08:32:13 -08:00
return (
<Wrapper ref={this.scrollView}>
{log
&& log.split('\n').map(item => (
<Fragment key={generateRandomString()}>
2018-12-05 08:32:13 -08:00
{item}
<br />
</Fragment>
))}
</Wrapper>
2018-12-05 08:32:13 -08:00
);
}
}