Skip to content

Commit a9cf0ff

Browse files
committed
refactor checks into reducers
1 parent e7f12ef commit a9cf0ff

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+484
-232
lines changed

lib/actions/actionTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
exports.SET_PROJECT = 'SET_PROJECT';
3-
exports.SETUP_WARNING = 'SETUP_WARNING';
3+
exports.VERIFY_SETUP = 'VERIFY_SETUP';
44
exports.LOAD_TUTORIALS = 'LOAD_TUTORIALS';
55
exports.SET_ROUTE = 'SET_ROUTE';
66
exports.SET_PAGE = 'SET_PAGE';

lib/actions/actions.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ function setProject() {
66
return { type: Type.SET_PROJECT };
77
}
88
exports.setProject = setProject;
9-
function setupWarning(warning) {
10-
return { type: Type.SETUP_WARNING, payload: { warning: warning } };
9+
function verifySetup() {
10+
return { type: Type.VERIFY_SETUP };
1111
}
12-
exports.setupWarning = setupWarning;
12+
exports.verifySetup = verifySetup;
1313
function setProgress() {
1414
return { type: Type.SET_PROGRESS };
1515
}

lib/atom/main.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ var render_1 = require('../components/render');
33
var polyfills_1 = require('../services/polyfills');
44
var subscriptions_1 = require('./subscriptions');
55
var editor_1 = require('./editor');
6-
var setup_1 = require('../services/setup/setup');
6+
var store_1 = require('../store/store');
7+
var Action = require('../actions/actions');
78
var Main = (function () {
89
function Main() {
910
window.coderoad = {
1011
dir: null
1112
};
1213
polyfills_1.default();
1314
editor_1.setAtomGlobals();
14-
setup_1.verifySetupComplete();
15+
store_1.store.dispatch(Action.verifySetup());
1516
this.root = render_1.initRoot();
1617
}
1718
Main.prototype.activate = function () {

lib/components/start/setup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ var _components_1 = require('../_components');
88
var setup_1 = require('../../services/setup/setup');
99
exports.SetupGuide = function (_a) {
1010
var warning = _a.warning;
11-
return (React.createElement("div", {className: 'cr-setup'}, React.createElement(list_1.default, null, React.createElement(Subheader_1.default, null, "Setup"), React.createElement(list_item_1.default, {key: warning.key}, React.createElement("h4", null, warning.title), React.createElement(_components_1.MarkdownText, {text: warning.text}))), React.createElement("br", null), !!warning.button ? React.createElement("div", {class: 'cr-setup-action'}, React.createElement(raised_button_1.default, {primary: true, label: warning.button, onTouchTap: warning.click}), React.createElement("br", null), React.createElement("br", null)) : null, !!warning.verify ? React.createElement("div", {class: 'cr-setup-action'}, React.createElement(raised_button_1.default, {label: "Verify " + warning.verify, secondary: true, onTouchTap: setup_1.verifySetupComplete}), React.createElement("br", null), React.createElement("br", null)) : null, React.createElement("div", {className: 'setup-guide'}, React.createElement("span", null, "Check the", React.createElement("a", {href: 'https://coderoad.github.io/docs#install'}, " ", React.createElement("strong", null, "Install Guide"))))));
11+
return (React.createElement("div", {className: 'cr-setup'}, React.createElement(list_1.default, null, React.createElement(Subheader_1.default, null, "Setup"), React.createElement(list_item_1.default, {key: warning.key}, React.createElement("h4", null, warning.title), React.createElement(_components_1.MarkdownText, {text: warning.text}))), React.createElement("br", null), !!warning.button ? React.createElement("div", {class: 'cr-setup-action'}, React.createElement(raised_button_1.default, {primary: true, label: warning.button, onTouchTap: warning.click}), React.createElement("br", null), React.createElement("br", null)) : null, !!warning.verify ? React.createElement("div", {class: 'cr-setup-action'}, React.createElement(raised_button_1.default, {label: "Verify " + warning.verify, secondary: true, onTouchTap: setup_1.verifySetupComplete}), React.createElement("br", null), React.createElement("br", null)) : null));
1212
};

lib/components/start/start.js

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

lib/reducers/checks/check-setup.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
"use strict";
2+
var tutorials_1 = require('../tutorials/tutorials');
3+
function hasDirectory() {
4+
return new Promise(function (resolve, reject) {
5+
var hasDirectory = !!window.coderoad.dir;
6+
if (!hasDirectory) {
7+
resolve(true);
8+
}
9+
else {
10+
resolve(true);
11+
}
12+
});
13+
}
14+
exports.hasDirectory = hasDirectory;
15+
function hasPackageJson() {
16+
return new Promise(function (resolve, reject) {
17+
var hasPackageJson = tutorials_1.packageJsonExists();
18+
if (!hasPackageJson) {
19+
resolve(true);
20+
}
21+
resolve(true);
22+
});
23+
}
24+
exports.hasPackageJson = hasPackageJson;
25+
function hasTutorialDep() {
26+
return new Promise(function (resolve, reject) {
27+
var packageJson = hasPackageJson ? tutorials_1.loadRootPackageJson() : null;
28+
var hasTutorialDep = !!packageJson && _tutorialInstalled(packageJson.dependencies) ||
29+
_tutorialInstalled(packageJson.devDependencies);
30+
if (!hasTutorialDep) {
31+
resolve(true);
32+
}
33+
resolve(true);
34+
});
35+
}
36+
exports.hasTutorialDep = hasTutorialDep;
37+
function _hasKeys(obj) {
38+
return Object.keys(obj).length > 0;
39+
}
40+
function _tutorialInstalled(location) {
41+
return !!location && _hasKeys(location) &&
42+
tutorials_1.searchForTutorials(location).length > 0;
43+
}

lib/reducers/checks/check-system.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
var command_line_1 = require('../../services/command-line');
3+
function npmVersionThreeOrLater() {
4+
var minVersion = 3;
5+
return new Promise(function (resolve, reject) {
6+
var threeOrLater = command_line_1.default('npm', '-v').then(function (res) { return parseInt(res, 10) >= minVersion; });
7+
if (!threeOrLater) {
8+
resolve(false);
9+
}
10+
else {
11+
resolve(true);
12+
}
13+
});
14+
}
15+
exports.npmVersionThreeOrLater = npmVersionThreeOrLater;

lib/reducers/checks/checks.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use strict";
2+
var Type = require('../../actions/actionTypes');
3+
var setup_1 = require('./setup');
4+
var defaultChecks = {
5+
passed: false,
6+
system: {
7+
node: false,
8+
npm: false
9+
},
10+
setup: {
11+
dir: false,
12+
packageJson: false,
13+
tutorial: false
14+
}
15+
};
16+
function checksReducer(checks, action) {
17+
if (checks === void 0) { checks = defaultChecks; }
18+
switch (action.type) {
19+
case Type.VERIFY_SETUP:
20+
return setup_1.default();
21+
default:
22+
return checks;
23+
}
24+
}
25+
Object.defineProperty(exports, "__esModule", { value: true });
26+
exports.default = checksReducer;

lib/reducers/checks/setup-actions.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"use strict";
2+
var path = require('path');
3+
var editor_1 = require('../../atom/editor');
4+
var actions_1 = require('../../atom/actions');
5+
var setup_1 = require('./setup');
6+
var packageData = "{\n \"name\": \"demo\",\n \"dependencies\": {\n \"coderoad-functional-school\": \"^0.2.1\"\n }\n}";
7+
function createPackageJson() {
8+
var packagePath = path.join(window.coderoad.dir, 'package.json');
9+
return new Promise(function (resolve, reject) {
10+
editor_1.open(packagePath);
11+
setTimeout(function () {
12+
resolve();
13+
});
14+
}).then(function () {
15+
editor_1.set(packageData);
16+
setup_1.verifySetupComplete();
17+
});
18+
}
19+
exports.createPackageJson = createPackageJson;
20+
function openDirectory() {
21+
return actions_1.openFolder();
22+
}
23+
exports.openDirectory = openDirectory;
24+
function installTutorial() {
25+
return actions_1.openTerminal();
26+
}
27+
exports.installTutorial = installTutorial;

lib/reducers/checks/setup.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"use strict";
2+
var check_system_1 = require('./check-system');
3+
var check_setup_1 = require('./check-setup');
4+
function allTrue(obj) {
5+
return Object.values(obj).every(function (x) { return x === true; });
6+
}
7+
function verified(checks) {
8+
return allTrue(checks.system) && allTrue(checks.setup);
9+
}
10+
function result(x) {
11+
return x;
12+
}
13+
function verifySetup() {
14+
var checks = {
15+
system: {
16+
node: true,
17+
npm: check_system_1.npmVersionThreeOrLater().then(result)
18+
},
19+
setup: {
20+
dir: check_setup_1.hasDirectory().then(result),
21+
packageJson: check_setup_1.hasPackageJson().then(result),
22+
tutorial: check_setup_1.hasTutorialDep().then(result)
23+
}
24+
};
25+
checks.passed = verified(checks);
26+
return checks;
27+
}
28+
Object.defineProperty(exports, "__esModule", { value: true });
29+
exports.default = verifySetup;

0 commit comments

Comments
 (0)