-
{message.userId}
-
{message.message}
-
{message.timestamp}
+
+
+
+ {message.image ? (
+
+
+

+
+
+ ) : (
+
+
+ {message.userId.substr(0, 2).toUpperCase()}
+
+
+ )}
+
+
+
+ {moment(message.timestamp).fromNow()}
+
+
+
+ {message.message}
-
))
) : (
diff --git a/src/client/components/Input.js b/src/client/components/Input.js
index 1f8a313..6989d24 100644
--- a/src/client/components/Input.js
+++ b/src/client/components/Input.js
@@ -1,6 +1,5 @@
import PropTypes from 'prop-types'
import React from 'react'
-import moment from 'moment'
import socket from '../socket.js'
export default class Input extends React.PureComponent {
@@ -24,7 +23,7 @@ export default class Input extends React.PureComponent {
this.submit()
}
handleKeyPress = e => {
- if (e.key === 'Enter') {
+ if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault()
this.submit()
}
@@ -37,8 +36,21 @@ export default class Input extends React.PureComponent {
sendMessage(message)
const userId = socket.id
- const timestamp = moment().format('ddd, D MMM HH:mm a')
- const payload = { userId, message, timestamp }
+ const timestamp = new Date()
+ let image = null
+
+ // take snapshoot
+ try {
+ const video = document.getElementById(`video-${userId}`)
+ const canvas = document.createElement('canvas')
+ canvas.height = video.videoHeight
+ canvas.width = video.videoWidth
+ const avatar = canvas.getContext('2d')
+ avatar.drawImage(video, 0, 0, canvas.width, canvas.height)
+ image = canvas.toDataURL()
+ } catch (e) {}
+
+ const payload = { userId, message, timestamp, image }
socket.emit('new_message', payload)
}
this.setState({ message: '' })
@@ -46,15 +58,18 @@ export default class Input extends React.PureComponent {
render () {
const { message } = this.state
return (
-
)
}
diff --git a/src/client/components/Video.js b/src/client/components/Video.js
index 7f40860..3eeff85 100644
--- a/src/client/components/Video.js
+++ b/src/client/components/Video.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import classnames from 'classnames'
import { MediaStream } from '../window.js'
+import socket from '../socket.js'
export const StreamPropType = PropTypes.shape({
mediaStream: PropTypes.instanceOf(MediaStream).isRequired,
@@ -48,6 +49,7 @@ export default class Video extends React.PureComponent {
return (