Skip to content

Commit 34bfc95

Browse files
committed
Add simple chat component and make videojs player fluid
1 parent 7a80a77 commit 34bfc95

File tree

2 files changed

+75
-3
lines changed

2 files changed

+75
-3
lines changed

src/components/chat/index.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// npm packages
2+
import React from 'react';
3+
4+
export default class Chat extends React.Component {
5+
constructor(props) {
6+
super(props);
7+
8+
this.state = {
9+
episode: props.episode,
10+
};
11+
}
12+
13+
componentWillReceiveProps(nextProps) {
14+
if (nextProps.episode && (!this.state.episode || nextProps.episode._id !== this.state.episode._id)) {
15+
this.setState({episode: nextProps.episode}, () => {
16+
this.connectToServer();
17+
});
18+
}
19+
}
20+
21+
connectToServer() {
22+
const {episode} = this.state;
23+
24+
// Create WebSocket connection.
25+
const url = `ws://localhost:3000${episode._id}`;
26+
this.socket = new WebSocket(url);
27+
28+
// Connection opened
29+
// this.socket.addEventListener('open', event => {
30+
// this.socket.send('Hello Server!');
31+
// });
32+
33+
// Listen for messages
34+
this.socket.addEventListener('message', event => {
35+
console.log('Message from server', event.data);
36+
});
37+
}
38+
39+
render() {
40+
return (
41+
<div className="column" style={{width: 340, maxWidth: 340, display: 'flex', flexDirection: 'column'}}>
42+
<div className="is-flex" style={{flexGrow: 1}}>
43+
Chat history
44+
</div>
45+
<div className="is-flex">
46+
<div className="field has-addons" style={{flexGrow: 1}}>
47+
<p className="control" style={{flexGrow: 1}}>
48+
<input className="input" type="text" placeholder="Send a message.." />
49+
</p>
50+
<p className="control" style={{marginRight: 10}}>
51+
<a className="button is-info">
52+
Send
53+
</a>
54+
</p>
55+
</div>
56+
</div>
57+
</div>
58+
);
59+
}
60+
}

src/pages/episode.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// npm packages
22
import React from 'react';
3-
import {Link} from 'react-router-dom';
43
// our packages
4+
import Chat from '../components/chat';
55
import PluginManager from '../api';
66

77
export default class Series extends React.Component {
@@ -25,6 +25,7 @@ export default class Series extends React.Component {
2525
}
2626

2727
videojs('video', {
28+
fluid: true,
2829
plugins: {
2930
ass: {
3031
src: file.subtitles,
@@ -54,7 +55,13 @@ export default class Series extends React.Component {
5455

5556
if (episode && file) {
5657
body = (
57-
<video id="video" className="video-js" controls autoPlay preload="auto">
58+
<video
59+
id="video"
60+
className="video-js vjs-default-skin vjs-big-play-centered vjs-fluid"
61+
controls
62+
autoPlay
63+
preload="auto"
64+
>
5865
<source src={file.url} type={file.type} />
5966
</video>
6067
);
@@ -75,7 +82,12 @@ export default class Series extends React.Component {
7582
</div>
7683
</nav>
7784

78-
{body}
85+
<div className="columns">
86+
<div className="column">
87+
{body}
88+
</div>
89+
<Chat episode={episode} />
90+
</div>
7991
</div>
8092
);
8193
}

0 commit comments

Comments
 (0)