Skip to content

Commit 414a1f0

Browse files
author
Christopher Willis-Ford
committed
move index.js to app.jsx and add new index.js shim
Note that the code inside app.jsx is exactly what used to be in index.js so this change causes no functional difference and just represents preparation for upcoming changes. It simplifies at least two upcoming changes: one wants the app code to be in a different file and the other is simplified by JSX syntax.
1 parent ee55d2b commit 414a1f0

File tree

2 files changed

+50
-49
lines changed

2 files changed

+50
-49
lines changed

src/renderer/app.jsx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import {ipcRenderer, shell} from 'electron';
2+
import React from 'react';
3+
import ReactDOM from 'react-dom';
4+
import GUI, {AppStateHOC} from 'scratch-gui';
5+
6+
import ElectronStorageHelper from '../common/ElectronStorageHelper';
7+
8+
import styles from './app.css';
9+
10+
const defaultProjectId = 0;
11+
12+
// override window.open so that it uses the OS's default browser, not an electron browser
13+
window.open = function (url, target) {
14+
if (target === '_blank') {
15+
shell.openExternal(url);
16+
}
17+
};
18+
// Register "base" page view
19+
// analytics.pageview('/');
20+
21+
const appTarget = document.getElementById('app');
22+
appTarget.className = styles.app || 'app'; // TODO
23+
document.body.appendChild(appTarget);
24+
25+
GUI.setAppElement(appTarget);
26+
const WrappedGui = AppStateHOC(GUI);
27+
28+
const onStorageInit = storageInstance => {
29+
storageInstance.addHelper(new ElectronStorageHelper(storageInstance));
30+
// storageInstance.addOfficialScratchWebStores(); // TODO: do we want this?
31+
};
32+
33+
const guiProps = {
34+
onStorageInit,
35+
isScratchDesktop: true,
36+
projectId: defaultProjectId,
37+
showTelemetryModal: (typeof ipcRenderer.sendSync('getTelemetryDidOptIn')) !== 'boolean',
38+
onTelemetryModalOptIn: () => {
39+
ipcRenderer.send('setTelemetryDidOptIn', true);
40+
},
41+
onTelemetryModalOptOut: () => {
42+
ipcRenderer.send('setTelemetryDidOptIn', false);
43+
},
44+
onProjectTelemetryEvent: (event, metadata) => {
45+
ipcRenderer.send(event, metadata);
46+
}
47+
};
48+
const wrappedGui = React.createElement(WrappedGui, guiProps);
49+
ReactDOM.render(wrappedGui, appTarget);

src/renderer/index.js

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1 @@
1-
import {ipcRenderer, shell} from 'electron';
2-
import React from 'react';
3-
import ReactDOM from 'react-dom';
4-
import GUI, {AppStateHOC} from 'scratch-gui';
5-
6-
import ElectronStorageHelper from '../common/ElectronStorageHelper';
7-
8-
import styles from './app.css';
9-
10-
const defaultProjectId = 0;
11-
12-
// override window.open so that it uses the OS's default browser, not an electron browser
13-
window.open = function (url, target) {
14-
if (target === '_blank') {
15-
shell.openExternal(url);
16-
}
17-
};
18-
// Register "base" page view
19-
// analytics.pageview('/');
20-
21-
const appTarget = document.getElementById('app');
22-
appTarget.className = styles.app || 'app'; // TODO
23-
document.body.appendChild(appTarget);
24-
25-
GUI.setAppElement(appTarget);
26-
const WrappedGui = AppStateHOC(GUI);
27-
28-
const onStorageInit = storageInstance => {
29-
storageInstance.addHelper(new ElectronStorageHelper(storageInstance));
30-
// storageInstance.addOfficialScratchWebStores(); // TODO: do we want this?
31-
};
32-
33-
const guiProps = {
34-
onStorageInit,
35-
isScratchDesktop: true,
36-
projectId: defaultProjectId,
37-
showTelemetryModal: (typeof ipcRenderer.sendSync('getTelemetryDidOptIn')) !== 'boolean',
38-
onTelemetryModalOptIn: () => {
39-
ipcRenderer.send('setTelemetryDidOptIn', true);
40-
},
41-
onTelemetryModalOptOut: () => {
42-
ipcRenderer.send('setTelemetryDidOptIn', false);
43-
},
44-
onProjectTelemetryEvent: (event, metadata) => {
45-
ipcRenderer.send(event, metadata);
46-
}
47-
};
48-
const wrappedGui = React.createElement(WrappedGui, guiProps);
49-
ReactDOM.render(wrappedGui, appTarget);
1+
import './app.jsx';

0 commit comments

Comments
 (0)