Skip to content

Commit 28d7947

Browse files
committed
Revert "Revert "fixes #761, but fixes the bigger issue at hand here, which is that log messages were not getting deserialized properly""
This reverts commit f1bc729.
1 parent f1bc729 commit 28d7947

File tree

4 files changed

+10
-30
lines changed

4 files changed

+10
-30
lines changed

client/modules/IDE/components/Console.jsx

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,6 @@ class Console extends React.Component {
7070
}
7171
}
7272

73-
formatData(args) {
74-
if (!Array.isArray(args)) {
75-
return Array.of(args);
76-
}
77-
return args;
78-
}
79-
8073
render() {
8174
const consoleClass = classNames({
8275
'preview-console': true,
@@ -105,16 +98,8 @@ class Console extends React.Component {
10598
</div>
10699
<div ref={(element) => { this.consoleMessages = element; }} className="preview-console__messages">
107100
{this.props.consoleEvents.map((consoleEvent) => {
108-
const { arguments: args, method, times } = consoleEvent;
101+
const { data: args, method, times } = consoleEvent;
109102
const { theme } = this.props;
110-
Object.assign(consoleEvent, { data: this.formatData(args) });
111-
if (Object.keys(args).length === 0) {
112-
return (
113-
<div key={consoleEvent.id} className="preview-console__message preview-console__message--undefined">
114-
<span key={`${consoleEvent.id}-0`}>undefined</span>
115-
</div>
116-
);
117-
}
118103
return (
119104
<div key={consoleEvent.id} className={`preview-console__message preview-console__message--${method}`}>
120105
{ times > 1 &&
@@ -127,7 +112,7 @@ class Console extends React.Component {
127112
}
128113
<ConsoleFeed
129114
styles={this.getConsoleFeedStyle(theme, times)}
130-
logs={Array.of(consoleEvent)}
115+
logs={[consoleEvent]}
131116
/>
132117
</div>
133118
);

client/modules/IDE/components/PreviewFrame.jsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import loopProtect from 'loop-protect';
88
import { JSHINT } from 'jshint';
99
import decomment from 'decomment';
1010
import classNames from 'classnames';
11+
import { Decode } from 'console-feed';
1112
import { getBlobUrl } from '../actions/files';
1213
import { resolvePathToFile } from '../../../../server/utils/filePath';
1314
import {
@@ -80,8 +81,10 @@ class PreviewFrame extends React.Component {
8081

8182
handleConsoleEvent(messageEvent) {
8283
if (Array.isArray(messageEvent.data)) {
83-
messageEvent.data.every((message, index, arr) => {
84-
const { arguments: args } = message;
84+
let decodedMessages = messageEvent.data.map(message => Decode(message.log));
85+
86+
decodedMessages.every((message, index, arr) => {
87+
const { data: args } = message;
8588
let hasInfiniteLoop = false;
8689
Object.keys(args).forEach((key) => {
8790
if (typeof args[key] === 'string' && args[key].includes('Exiting potential infinite loop')) {
@@ -99,7 +102,7 @@ class PreviewFrame extends React.Component {
99102
}
100103
const cur = Object.assign(message, { times: 1 });
101104
const nextIndex = index + 1;
102-
while (isEqual(cur.arguments, arr[nextIndex].arguments) && cur.method === arr[nextIndex].method) {
105+
while (isEqual(cur.data, arr[nextIndex].data) && cur.method === arr[nextIndex].method) {
103106
cur.times += 1;
104107
arr.splice(nextIndex, 1);
105108
if (nextIndex === arr.length) {
@@ -109,7 +112,7 @@ class PreviewFrame extends React.Component {
109112
return true;
110113
});
111114

112-
this.props.dispatchConsoleEvent(messageEvent.data);
115+
this.props.dispatchConsoleEvent(decodedMessages);
113116
}
114117
}
115118

client/modules/IDE/reducers/console.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,12 @@ import * as ActionTypes from '../../../constants';
22

33
const consoleMax = 500;
44
const initialState = [];
5-
let messageId = 0;
65

76
const console = (state = initialState, action) => {
87
let messages;
98
switch (action.type) {
109
case ActionTypes.CONSOLE_EVENT:
1110
messages = [...action.event];
12-
messages.forEach((message) => {
13-
message.id = messageId;
14-
messageId += 1;
15-
});
1611
return state.concat(messages).slice(-consoleMax);
1712
case ActionTypes.CLEAR_CONSOLE:
1813
return [];

client/utils/previewEntry.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,8 @@ window.loopProtect = loopProtect;
66
const consoleBuffer = [];
77
const LOGWAIT = 500;
88
Hook(window.console, (log) => {
9-
const { method, data: args } = log[0];
109
consoleBuffer.push({
11-
method,
12-
arguments: args,
13-
source: 'sketch'
10+
log
1411
});
1512
});
1613
setInterval(() => {

0 commit comments

Comments
 (0)