Skip to content

Commit ee02a3e

Browse files
authored
Merge pull request #1502 from ghalestrilo/feature/error-output
Add <Console /> to Mobile Views
2 parents cd564d2 + 8f60b35 commit ee02a3e

File tree

6 files changed

+72
-28
lines changed

6 files changed

+72
-28
lines changed

client/components/mobile/Footer.jsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
import React from 'react';
22
import styled from 'styled-components';
3-
import { prop, remSize } from '../../theme';
3+
import { prop } from '../../theme';
4+
45

56
const background = prop('MobilePanel.default.background');
67
const textColor = prop('primaryTextColor');
78

8-
const Footer = styled.div`
9+
export default styled.div`
910
position: fixed;
1011
width: 100%;
12+
bottom: 0;
1113
background: ${background};
1214
color: ${textColor};
13-
padding: ${remSize(12)};
14-
padding-left: ${remSize(32)};
15-
z-index: 1;
16-
17-
bottom: 0;
1815
`;
19-
20-
export default Footer;

client/modules/IDE/components/Console.jsx

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import PropTypes from 'prop-types';
22
import React from 'react';
3+
import { useSelector, useDispatch, connect } from 'react-redux';
34
import classNames from 'classnames';
45
import { Console as ConsoleFeed } from 'console-feed';
56
import {
@@ -22,7 +23,10 @@ import infoContrastUrl from '../../../images/console-info-contrast.svg?byUrl';
2223
import UpArrowIcon from '../../../images/up-arrow.svg';
2324
import DownArrowIcon from '../../../images/down-arrow.svg';
2425

25-
class Console extends React.Component {
26+
import * as IDEActions from '../../IDE/actions/ide';
27+
import * as ConsoleActions from '../../IDE/actions/console';
28+
29+
class ConsoleComponent extends React.Component {
2630
componentDidUpdate(prevProps) {
2731
this.consoleMessages.scrollTop = this.consoleMessages.scrollHeight;
2832
if (this.props.theme !== prevProps.theme) {
@@ -132,7 +136,7 @@ class Console extends React.Component {
132136
}
133137
}
134138

135-
Console.propTypes = {
139+
ConsoleComponent.propTypes = {
136140
consoleEvents: PropTypes.arrayOf(PropTypes.shape({
137141
method: PropTypes.string.isRequired,
138142
args: PropTypes.arrayOf(PropTypes.string)
@@ -146,8 +150,47 @@ Console.propTypes = {
146150
fontSize: PropTypes.number.isRequired
147151
};
148152

149-
Console.defaultProps = {
153+
ConsoleComponent.defaultProps = {
150154
consoleEvents: []
151155
};
152156

157+
// TODO: Use Hooks implementation. Requires react-redux 7.1.0
158+
/*
159+
const Console = () => {
160+
const consoleEvents = useSelector(state => state.console);
161+
const { consoleIsExpanded } = useSelector(state => state.ide);
162+
const { theme, fontSize } = useSelector(state => state.preferences);
163+
164+
const dispatch = useDispatch();
165+
166+
return (
167+
<ConsoleComponent
168+
consoleEvents={consoleEvents}
169+
isExpanded={consoleIsExpanded}
170+
theme={theme}
171+
fontSize={fontSize}
172+
collapseConsole={() => dispatch({})}
173+
expandConsole={() => dispatch({})}
174+
clearConsole={() => dispatch({})}
175+
dispatchConsoleEvent={() => dispatch({})}
176+
/>
177+
);
178+
};
179+
*/
180+
181+
const Console = connect(
182+
state => ({
183+
consoleEvents: state.console,
184+
isExpanded: state.ide.consoleIsExpanded,
185+
theme: state.preferences.theme,
186+
fontSize: state.preferences.fontSize
187+
}),
188+
dispatch => ({
189+
collapseConsole: () => dispatch(IDEActions.collapseConsole()),
190+
expandConsole: () => dispatch(IDEActions.expandConsole()),
191+
clearConsole: () => dispatch(ConsoleActions.clearConsole()),
192+
dispatchConsoleEvent: msgs => dispatch(ConsoleActions.dispatchConsoleEvent(msgs)),
193+
})
194+
)(ConsoleComponent);
195+
153196
export default Console;

client/modules/IDE/pages/IDEView.jsx

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -324,16 +324,7 @@ class IDEView extends React.Component {
324324
runtimeErrorWarningVisible={this.props.ide.runtimeErrorWarningVisible}
325325
provideController={(ctl) => { this.cmController = ctl; }}
326326
/>
327-
<Console
328-
fontSize={this.props.preferences.fontSize}
329-
consoleEvents={this.props.console}
330-
isExpanded={this.props.ide.consoleIsExpanded}
331-
expandConsole={this.props.expandConsole}
332-
collapseConsole={this.props.collapseConsole}
333-
clearConsole={this.props.clearConsole}
334-
dispatchConsoleEvent={this.props.dispatchConsoleEvent}
335-
theme={this.props.preferences.theme}
336-
/>
327+
<Console />
337328
</SplitPane>
338329
<section className="preview-frame-holder">
339330
<header className="preview-frame__header">
@@ -649,6 +640,4 @@ function mapDispatchToProps(dispatch) {
649640
);
650641
}
651642

652-
653643
export default withTranslation('WebEditor')(withRouter(connect(mapStateToProps, mapDispatchToProps)(IDEView)));
654-

client/modules/IDE/pages/MobileIDEView.jsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
33
import { connect } from 'react-redux';
44
import { withRouter } from 'react-router';
55
import { useState } from 'react';
6+
import styled from 'styled-components';
67

78
// Imports to be Refactored
89
import { bindActionCreators } from 'redux';
@@ -25,9 +26,16 @@ import Header from '../../../components/mobile/Header';
2526
import Screen from '../../../components/mobile/MobileScreen';
2627
import Footer from '../../../components/mobile/Footer';
2728
import IDEWrapper from '../../../components/mobile/IDEWrapper';
29+
import Console from '../components/Console';
30+
import { remSize } from '../../../theme';
2831

2932
const isUserOwner = ({ project, user }) => (project.owner && project.owner.id === user.id);
3033

34+
const BottomBarContent = styled.h2`
35+
padding: ${remSize(12)};
36+
padding-left: ${remSize(32)};
37+
`;
38+
3139
const MobileIDEView = (props) => {
3240
const {
3341
preferences, ide, editorAccessibility, project, updateLintMessage, clearLintMessage,
@@ -94,7 +102,10 @@ const MobileIDEView = (props) => {
94102
provideController={setTmController}
95103
/>
96104
</IDEWrapper>
97-
<Footer><h2>Bottom Bar</h2></Footer>
105+
<Footer>
106+
<Console />
107+
<BottomBarContent>Bottom Bar</BottomBarContent>
108+
</Footer>
98109
</Screen>
99110
);
100111
};

client/modules/Mobile/MobileSketchView.jsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Header from '../../components/mobile/Header';
77
import IconButton from '../../components/mobile/IconButton';
88
import PreviewFrame from '../IDE/components/PreviewFrame';
99
import Screen from '../../components/mobile/MobileScreen';
10+
import Console from '../IDE/components/Console';
1011
import * as ProjectActions from '../IDE/actions/project';
1112
import * as IDEActions from '../IDE/actions/ide';
1213
import * as PreferencesActions from '../IDE/actions/preferences';
@@ -18,6 +19,7 @@ import { getHTMLFile } from '../IDE/reducers/files';
1819

1920
import { ExitIcon } from '../../common/icons';
2021
import { remSize } from '../../theme';
22+
import Footer from '../../components/mobile/Footer';
2123

2224

2325
const Content = styled.div`
@@ -82,6 +84,9 @@ const MobileSketchView = (props) => {
8284
clearConsole={clearConsole}
8385
/>
8486
</Content>
87+
<Footer>
88+
<Console />
89+
</Footer>
8590
</Screen>);
8691
};
8792

@@ -146,7 +151,6 @@ MobileSketchView.propTypes = {
146151
justOpenedProject: PropTypes.bool.isRequired,
147152
errorType: PropTypes.string,
148153
runtimeErrorWarningVisible: PropTypes.bool.isRequired,
149-
uploadFileModalVisible: PropTypes.bool.isRequired
150154
}).isRequired,
151155

152156
projectName: PropTypes.string.isRequired,

package-lock.json

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

0 commit comments

Comments
 (0)