js-waku/web-chat/src/App.tsx

51 lines
1019 B
TypeScript
Raw Normal View History

2021-04-14 14:44:12 +10:00
import React from 'react';
import './App.css';
2021-04-16 11:32:00 +10:00
import Room from './Room';
2021-04-19 10:36:37 +10:00
import WakuMock from './WakuMock';
2021-04-19 11:34:13 +10:00
import { WakuContext } from './WakuContext';
2021-04-14 14:44:12 +10:00
2021-04-14 15:23:00 +10:00
interface Props {
}
interface State {
2021-04-19 11:34:13 +10:00
messages: string[],
waku?: WakuMock
2021-04-14 15:23:00 +10:00
}
class App extends React.Component<Props, State> {
2021-04-19 11:34:13 +10:00
waku?: WakuMock;
2021-04-14 15:23:00 +10:00
constructor(props: Props) {
super(props);
this.state = {
2021-04-19 10:36:37 +10:00
messages: []
2021-04-14 15:23:00 +10:00
};
2021-04-19 10:36:37 +10:00
2021-04-19 11:34:13 +10:00
WakuMock.create().then((wakuMock) => {
this.setState({ waku: wakuMock, messages: this.state.messages });
wakuMock.on('message', (message) => {
const messages = this.state.messages.slice();
messages.push(message.message);
this.setState({ messages });
});
});
2021-04-14 15:23:00 +10:00
}
render() {
return (
<div className='App'>
2021-04-16 11:32:00 +10:00
<div className='chat-room'>
2021-04-19 11:34:13 +10:00
<WakuContext.Provider value={{ waku: this.state.waku }}>
<Room lines={this.state.messages} />
</WakuContext.Provider>
2021-04-14 15:23:00 +10:00
</div>
2021-04-14 15:13:55 +10:00
</div>
2021-04-14 15:23:00 +10:00
);
}
2021-04-14 14:44:12 +10:00
}
export default App;