Skip to content

Commit f1bc729

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

File tree

4 files changed

+30
-10
lines changed

4 files changed

+30
-10
lines changed

client/modules/IDE/components/Console.jsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,13 @@ 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+
7380
render() {
7481
const consoleClass = classNames({
7582
'preview-console': true,
@@ -98,8 +105,16 @@ class Console extends React.Component {
98105
</div>
99106
<div ref={(element) => { this.consoleMessages = element; }} className="preview-console__messages">
100107
{this.props.consoleEvents.map((consoleEvent) => {
101-
const { data: args, method, times } = consoleEvent;
108+
const { arguments: args, method, times } = consoleEvent;
102109
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+
}
103118
return (
104119
<div key={consoleEvent.id} className={`preview-console__message preview-console__message--${method}`}>
105120
{ times > 1 &&
@@ -112,7 +127,7 @@ class Console extends React.Component {
112127
}
113128
<ConsoleFeed
114129
styles={this.getConsoleFeedStyle(theme, times)}
115-
logs={[consoleEvent]}
130+
logs={Array.of(consoleEvent)}
116131
/>
117132
</div>
118133
);

client/modules/IDE/components/PreviewFrame.jsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ 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';
1211
import { getBlobUrl } from '../actions/files';
1312
import { resolvePathToFile } from '../../../../server/utils/filePath';
1413
import {
@@ -81,10 +80,8 @@ class PreviewFrame extends React.Component {
8180

8281
handleConsoleEvent(messageEvent) {
8382
if (Array.isArray(messageEvent.data)) {
84-
let decodedMessages = messageEvent.data.map(message => Decode(message.log));
85-
86-
decodedMessages.every((message, index, arr) => {
87-
const { data: args } = message;
83+
messageEvent.data.every((message, index, arr) => {
84+
const { arguments: args } = message;
8885
let hasInfiniteLoop = false;
8986
Object.keys(args).forEach((key) => {
9087
if (typeof args[key] === 'string' && args[key].includes('Exiting potential infinite loop')) {
@@ -102,7 +99,7 @@ class PreviewFrame extends React.Component {
10299
}
103100
const cur = Object.assign(message, { times: 1 });
104101
const nextIndex = index + 1;
105-
while (isEqual(cur.data, arr[nextIndex].data) && cur.method === arr[nextIndex].method) {
102+
while (isEqual(cur.arguments, arr[nextIndex].arguments) && cur.method === arr[nextIndex].method) {
106103
cur.times += 1;
107104
arr.splice(nextIndex, 1);
108105
if (nextIndex === arr.length) {
@@ -112,7 +109,7 @@ class PreviewFrame extends React.Component {
112109
return true;
113110
});
114111

115-
this.props.dispatchConsoleEvent(decodedMessages);
112+
this.props.dispatchConsoleEvent(messageEvent.data);
116113
}
117114
}
118115

client/modules/IDE/reducers/console.js

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

33
const consoleMax = 500;
44
const initialState = [];
5+
let messageId = 0;
56

67
const console = (state = initialState, action) => {
78
let messages;
89
switch (action.type) {
910
case ActionTypes.CONSOLE_EVENT:
1011
messages = [...action.event];
12+
messages.forEach((message) => {
13+
message.id = messageId;
14+
messageId += 1;
15+
});
1116
return state.concat(messages).slice(-consoleMax);
1217
case ActionTypes.CLEAR_CONSOLE:
1318
return [];

client/utils/previewEntry.js

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

0 commit comments

Comments
 (0)