Skip to content
This repository was archived by the owner on May 5, 2020. It is now read-only.

Commit 2bd17db

Browse files
committed
show correct type and content of sent messages
1 parent 608d7ed commit 2bd17db

File tree

5 files changed

+171
-41
lines changed

5 files changed

+171
-41
lines changed

package-lock.json

Lines changed: 96 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
},
1313
"devDependencies": {
1414
"asar": "^0.13.0",
15+
"babel-cli": "^6.26.0",
1516
"babel-core": "^6.26.0",
16-
"babel-preset-react": "^6.24.1",
1717
"babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
1818
"babel-plugin-transform-object-rest-spread": "^6.26.0",
19+
"babel-preset-react": "^6.24.1",
1920
"babelify": "^8.0.0",
2021
"browser-sync": "^2.18.5",
2122
"browserify": "^16.1.0",

src/app/js/components/column/messageSender/MessageSenderView.js

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Message editor
55
*/
66

7-
import React, { Component } from 'react'
7+
import React, { Component, Fragment } from 'react'
88
import Autosuggest from 'react-autosuggest'
99
import Editor from './Editor'
1010

@@ -264,7 +264,7 @@ class MessageSender extends Component {
264264
noMessageArgument () {
265265
this.setState({
266266
messageCollection: [],
267-
messageInEditor: 0
267+
messageInEditor: -1
268268
})
269269
}
270270

@@ -281,7 +281,7 @@ class MessageSender extends Component {
281281
};
282282

283283
let sendIsEnabled = true
284-
if ( !connected || !state.eventName || !state.messageCollection.map( m => m.isValid ).reduce( (a, b) => a && b) )
284+
if ( !connected || !state.eventName || ( ~messageInEditor && !state.messageCollection.map( m => m.isValid ).reduce( (a, b) => a && b) ) )
285285
sendIsEnabled = false
286286

287287
return (
@@ -349,27 +349,32 @@ class MessageSender extends Component {
349349
</div>
350350
</div>
351351

352-
<div className="column-string">
353-
<span>
354-
<select value={messageInEditorObject.type} onChange={this.changeType}>
355-
<option value="String">String</option>
356-
<option value="JSON">JSON</option>
357-
<option value="Array">Array</option>
358-
<option value="Object">Object</option>
359-
<option value="Number">Number</option>
360-
<option value="Boolean">Boolean</option>
361-
</select>
362-
</span>
363-
</div>
364-
365-
<button
366-
className="column-button"
367-
onClick={this.handleClearClick}
368-
>
369-
Clear
370-
</button>
352+
{ ~messageInEditor ?
353+
<Fragment>
354+
<div className="column-string">
355+
<span>
356+
<select value={messageInEditorObject.type} onChange={this.changeType}>
357+
<option value="String">String</option>
358+
<option value="JSON">JSON</option>
359+
<option value="Array">Array</option>
360+
<option value="Object">Object</option>
361+
<option value="Number">Number</option>
362+
<option value="Boolean">Boolean</option>
363+
</select>
364+
</span>
365+
</div>
371366

372-
<Editor message={messageInEditorObject} handleMessageChange={this.handleMessageChange} />
367+
<button
368+
className="column-button"
369+
onClick={this.handleClearClick}
370+
>
371+
Clear
372+
</button>
373+
374+
<Editor message={messageInEditorObject} handleMessageChange={this.handleMessageChange} />
375+
</Fragment>
376+
: null
377+
}
373378

374379
<button
375380
className="column-button"

src/app/js/components/messages/Message.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ const Message = ({message}) =>
1818
<span className="message-text-content">{message.eventName}</span>
1919
<span className="message-text-date">{formatDate(message.timestamp)}</span>
2020
</div>
21-
{message.message.map( (message, i) =>
22-
<MessageView key={i} index={i} message={message} />
21+
{message.message.map( (messageContent, i) =>
22+
<MessageView key={i} index={i} message={messageContent} isSentMessage={!!message.right} />
2323
)}
2424
</div>
2525

src/app/js/components/messages/MessageView.js

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,24 @@ class MessageViewer extends Component {
1313
constructor (props) {
1414
super(props)
1515

16-
const message = props.message
17-
const messageType = Object.prototype.toString.apply(message).slice(8, -1)
18-
const parsed = this.formatMessage(message)
19-
const isJson = Object.prototype.toString.apply(parsed).slice(8, -1) !== 'String' && messageType === 'String'
16+
const state = {}
17+
18+
if ( props.isSentMessage ) {
19+
state.messageType = props.message.type
20+
state.parsed = this.parseMessage(props.message.value, props.message.type)
21+
state.isJson = state.messageType === 'JSON'
22+
state.raw = props.message.value
23+
} else {
24+
const message = props.message
25+
state.messageType = Object.prototype.toString.apply(message).slice(8, -1)
26+
state.parsed = this.tryToParseJSONMessage(message)
27+
state.isJson = Object.prototype.toString.apply(state.parsed).slice(8, -1) !== 'String' && state.messageType === 'String'
28+
state.raw = props.message
29+
}
2030

2131
this.state = {
2232
showRaw: false,
23-
messageType,
24-
parsed,
25-
isJson
33+
...state
2634
}
2735

2836
this.toggleRaw = this.toggleRaw.bind(this)
@@ -35,7 +43,7 @@ class MessageViewer extends Component {
3543
*
3644
* @return {Object or String} parsed JSON or original string of invalid
3745
*/
38-
formatMessage (string) {
46+
tryToParseJSONMessage (string) {
3947
let result
4048
try {
4149
result = JSON.parse(string)
@@ -46,15 +54,40 @@ class MessageViewer extends Component {
4654
return result
4755
}
4856

57+
parseMessage (string, type) {
58+
console.log('parse', string, type)
59+
switch ( type ) {
60+
case 'String':
61+
return string
62+
63+
case 'Array':
64+
case 'Object':
65+
let result
66+
eval(`result = ${string}`)
67+
return result
68+
69+
case 'Number':
70+
return ~~string
71+
72+
case 'JSON':
73+
return this.tryToParseJSONMessage(string)
74+
75+
case 'Boolean':
76+
return string === 'true'
77+
78+
default:
79+
return string
80+
}
81+
}
82+
4983
toggleRaw (e) {
5084
this.setState({
5185
showRaw: !this.state.showRaw
5286
})
5387
}
5488

5589
render () {
56-
const {isJson, parsed, messageType} = this.state
57-
const raw = this.props.message
90+
const {isJson, parsed, messageType, raw} = this.state
5891
const showRaw = this.state.showRaw
5992
return (
6093
<div className="message-preview">

0 commit comments

Comments
 (0)