Skip to content

Commit 28866c6

Browse files
committed
moving store into action creators
1 parent 37e2e70 commit 28866c6

Some content is hidden

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

47 files changed

+259
-196
lines changed

lib/actions/page.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,25 @@ var test_1 = require('./test');
33
var _types_1 = require('./_types');
44
var store_1 = require('../store');
55
function pageNext() {
6-
var pagePosition = store_1.default.getState().pagePosition;
7-
var pages = store_1.default.getState().tutorial.pages;
6+
var _a = store_1.default.getState(), pagePosition = _a.pagePosition, tutorial = _a.tutorial;
7+
var pages = tutorial.pages;
88
if (pagePosition >= pages.length - 1) {
99
return { type: _types_1.ROUTE_SET, payload: { route: 'final' } };
1010
}
1111
else {
12-
pagePosition = pagePosition + 1;
12+
pagePosition += 1;
1313
setTimeout(function () { return store_1.default.dispatch(test_1.testsLoad(pagePosition)); });
14-
return { type: _types_1.PAGE_SET, payload: { pagePosition: pagePosition } };
14+
return pageSet(pagePosition);
1515
}
1616
}
1717
exports.pageNext = pageNext;
1818
function pageSet(pagePosition) {
1919
if (pagePosition === void 0) { pagePosition = 0; }
20-
var _a = store_1.default.getState(), progress = _a.progress, tutorial = _a.tutorial;
20+
var _a = store_1.default.getState(), dir = _a.dir, progress = _a.progress, tutorial = _a.tutorial;
2121
if (pagePosition >= progress.pages.length) {
22-
return {
23-
payload: { route: 'final' },
24-
type: _types_1.ROUTE_SET,
25-
};
22+
return { type: _types_1.ROUTE_SET, payload: { route: 'final' } };
2623
}
27-
return { type: _types_1.PAGE_SET, payload: { pagePosition: pagePosition, tutorial: tutorial } };
24+
return { type: _types_1.PAGE_SET, payload: { dir: dir, pagePosition: pagePosition, tutorial: tutorial, progress: progress } };
2825
}
2926
exports.pageSet = pageSet;
3027
function pagePositionLoad() {

lib/actions/progress.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@ function progressLoad() {
99
}
1010
exports.progressLoad = progressLoad;
1111
function completePage() {
12-
var _a = store_1.default.getState(), pagePosition = _a.pagePosition, progress = _a.progress;
12+
var _a = store_1.default.getState(), pagePosition = _a.pagePosition, progress = _a.progress, tutorial = _a.tutorial;
1313
if (progress.pages.every(function (x) { return x.completed; })) {
1414
store_1.default.dispatch(completeTutorial());
1515
}
16-
return { type: _types_1.COMPLETE_PAGE, payload: { pagePosition: pagePosition } };
16+
return { type: _types_1.COMPLETE_PAGE, payload: { pagePosition: pagePosition, tutorial: tutorial } };
1717
}
1818
exports.completePage = completePage;
1919
function completeTutorial() {
20-
return { type: _types_1.COMPLETE_TUTORIAL };
20+
var tutorial = store_1.default.getState().tutorial;
21+
return { type: _types_1.COMPLETE_TUTORIAL, payload: { tutorial: tutorial } };
2122
}
2223
exports.completeTutorial = completeTutorial;

lib/actions/setup.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var package_1 = require('./package');
44
var store_1 = require('../store');
55
function setupVerify() {
66
store_1.default.dispatch(package_1.packageSet());
7-
return { type: _types_1.SETUP_VERIFY };
7+
var _a = store_1.default.getState(), dir = _a.dir, packageJson = _a.packageJson;
8+
return { type: _types_1.SETUP_VERIFY, payload: { dir: dir, packageJson: packageJson } };
89
}
910
exports.setupVerify = setupVerify;

lib/actions/test.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
var _types_1 = require('./_types');
33
var store_1 = require('../store');
44
function testRun() {
5-
return { type: _types_1.TEST_RUN };
5+
var _a = store_1.default.getState(), taskTests = _a.taskTests, dir = _a.dir, tutorial = _a.tutorial, taskPosition = _a.taskPosition;
6+
return { type: _types_1.TEST_RUN, payload: { taskTests: taskTests, dir: dir, tutorial: tutorial, taskPosition: taskPosition } };
67
}
78
exports.testRun = testRun;
89
function testResult(result) {
9-
var actions = store_1.default.getState().taskActions;
10-
return { type: _types_1.TEST_RESULT, payload: { result: result, actions: actions } };
10+
var taskActions = store_1.default.getState().taskActions;
11+
return { type: _types_1.TEST_RESULT, payload: { result: result, taskActions: taskActions } };
1112
}
1213
exports.testResult = testResult;
1314
function testComplete() {
@@ -19,7 +20,9 @@ function testSave() {
1920
}
2021
exports.testSave = testSave;
2122
function testsLoad(pagePosition) {
22-
var _a = store_1.default.getState(), tasks = _a.tasks, progress = _a.progress;
23-
return { type: _types_1.TESTS_LOAD, payload: { pagePosition: pagePosition, tasks: tasks, progress: progress } };
23+
var _a = store_1.default.getState(), tasks = _a.tasks, progress = _a.progress, tutorial = _a.tutorial, dir = _a.dir;
24+
return { type: _types_1.TESTS_LOAD, payload: {
25+
pagePosition: pagePosition, tasks: tasks, progress: progress, tutorial: tutorial, dir: dir
26+
} };
2427
}
2528
exports.testsLoad = testsLoad;

lib/components/Start/Checks/SetupChecks.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ var SetupChecks = function (_a) {
1212
if (setup.passed) {
1313
return null;
1414
}
15-
var dir = setup.dir, packageJson = setup.packageJson, tutorial = setup.tutorial;
16-
var status = [dir, packageJson, tutorial];
17-
return (React.createElement(Card_1.Card, {className: 'cr-check'}, React.createElement(Card_1.CardHeader, {title: 'Setup Checks', subtitle: 'CodeRoad requires a brief setup'}), React.createElement(Card_1.CardText, null, React.createElement(DynamicStepper_1.default, {status: status}, React.createElement(StepCheck_1.default, {label: 'open a directory', completed: dir}, React.createElement("p", null, "File -> Open (a new folder)"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Open Directory', secondary: true, onTouchTap: action_setup_1.openDirectory})), React.createElement(StepCheck_1.default, {label: 'package.json', completed: packageJson}, "Create a package.json by running", React.createElement("br", null), React.createElement("code", null, "> npm init -y`"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Create package.json', secondary: true, onTouchTap: action_setup_1.createPackageJson})), React.createElement(StepCheck_1.default, {label: 'install a tutorial', completed: tutorial}, "Install a tutorial using npm. For example:", React.createElement("br", null), React.createElement("code", null, "> npm install --save-dev coderoad-functional-school"), React.createElement("br", null)))), React.createElement(Card_1.CardActions, null, React.createElement(VerifyButton_1.default, null))));
15+
var hasDir = setup.hasDir, hasPackageJson = setup.hasPackageJson, hasTutorial = setup.hasTutorial;
16+
var status = [hasDir, hasPackageJson, hasTutorial];
17+
return (React.createElement(Card_1.Card, {className: 'cr-check'}, React.createElement(Card_1.CardHeader, {title: 'Setup Checks', subtitle: 'CodeRoad requires a brief setup'}), React.createElement(Card_1.CardText, null, React.createElement(DynamicStepper_1.default, {status: status}, React.createElement(StepCheck_1.default, {label: 'open a directory', completed: hasDir}, React.createElement("p", null, "File -> Open (a new folder)"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Open Directory', secondary: true, onTouchTap: action_setup_1.openDirectory})), React.createElement(StepCheck_1.default, {label: 'package.json', completed: hasPackageJson}, "Create a package.json by running", React.createElement("br", null), React.createElement("code", null, "> npm init -y`"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Create package.json', secondary: true, onTouchTap: action_setup_1.createPackageJson})), React.createElement(StepCheck_1.default, {label: 'install a tutorial', completed: hasTutorial}, "Install a tutorial using npm. For example:", React.createElement("br", null), React.createElement("code", null, "> npm install --save-dev coderoad-functional-school"), React.createElement("br", null)))), React.createElement(Card_1.CardActions, null, React.createElement(VerifyButton_1.default, null))));
1818
};
1919
Object.defineProperty(exports, "__esModule", { value: true });
2020
exports.default = SetupChecks;

lib/components/index.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"use strict";
2+
var Alert_1 = require('./Alert');
3+
exports.Alert = Alert_1.default;
4+
var AppMenu_1 = require('./AppMenu');
5+
exports.AppMenu = AppMenu_1.default;
6+
var FinalPage_1 = require('./FinalPage');
7+
exports.FinalPage = FinalPage_1.default;
8+
var Page_1 = require('./Page');
9+
exports.Page = Page_1.default;
10+
var Progress_1 = require('./Progress');
11+
exports.Progress = Progress_1.default;
12+
var Routes_1 = require('./Routes');
13+
exports.Routes = Routes_1.default;
14+
var Start_1 = require('./Start');
15+
exports.Start = Start_1.default;
16+
var Tutorials_1 = require('./Tutorials');
17+
exports.Tutorials = Tutorials_1.default;
18+
var Markdown_1 = require('./common/Markdown');
19+
exports.Markdown = Markdown_1.default;
20+
var RouteButton_1 = require('./common/RouteButton');
21+
exports.RouteButton = RouteButton_1.default;
22+
var ContentCard_1 = require('./common/ContentCard');
23+
exports.ContentCard = ContentCard_1.default;

lib/reducers/checks/action-setup.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,14 @@
22
var path_1 = require('path');
33
var editor_1 = require('../../atom/editor');
44
var editor_2 = require('../../atom/editor');
5-
var store_1 = require('../../store');
65
var actions_1 = require('../../actions');
6+
var store_1 = require('../../store');
77
var packageData = "{\n \"name\": \"demo\",\n \"dependencies\": {\n \"coderoad-functional-school\": \"^0.2.1\"\n }\n}";
8-
function createPackageJson() {
9-
var dir = store_1.default.getState().dir;
8+
function createPackageJson(dir) {
109
var packagePath = path_1.join(dir, 'package.json');
1110
return new Promise(function (resolve, reject) {
1211
editor_1.open(packagePath);
13-
setTimeout(function () {
14-
resolve();
15-
});
12+
setTimeout(function () { return resolve(); });
1613
}).then(function () {
1714
editor_1.set(packageData);
1815
store_1.default.dispatch(actions_1.setupVerify());

lib/reducers/checks/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@ var _checks = {
99
xcode: false,
1010
},
1111
setup: {
12-
dir: false,
13-
packageJson: false,
14-
tutorial: false,
12+
hasDir: false,
13+
hasPackageJson: false,
14+
hasTutorial: false,
1515
}
1616
};
1717
function checksReducer(checks, action) {
1818
if (checks === void 0) { checks = _checks; }
1919
switch (action.type) {
2020
case _types_1.SETUP_VERIFY:
21-
return verify_1.default();
21+
var _a = action.payload, dir = _a.dir, packageJson = _a.packageJson;
22+
return verify_1.default(dir, packageJson);
2223
default:
2324
return checks;
2425
}

lib/reducers/checks/verify.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
"use strict";
22
var check_system_1 = require('./check-system');
3-
var store_1 = require('../../store');
43
var check_1 = require('../tutorial-list/check');
54
function allTrue(obj) {
65
return Object.values(obj).every(function (x) { return x === true; });
76
}
8-
function setupVerify() {
9-
var dir = !!store_1.default.getState().dir;
10-
var packageJson = false;
11-
var tutorial = false;
12-
var pj = store_1.default.getState().packageJson;
13-
if (dir) {
14-
packageJson = !!pj;
7+
function setupVerify(dir, packageJson) {
8+
var hasPackageJson = false;
9+
var hasTutorial = false;
10+
var hasDir = !!dir;
11+
if (hasDir) {
12+
hasPackageJson = !!packageJson;
1513
}
16-
if (dir && packageJson) {
17-
tutorial = !!check_1.searchForTutorials(pj.dependencies).length || !!check_1.searchForTutorials(pj.devDependencies).length;
14+
if (hasDir && hasPackageJson) {
15+
hasTutorial = !!check_1.searchForTutorials(dir, packageJson.dependencies).length ||
16+
!!check_1.searchForTutorials(dir, packageJson.devDependencies).length;
1817
}
1918
var checks = {
2019
system: {
@@ -23,9 +22,9 @@ function setupVerify() {
2322
xcode: !!check_system_1.requiresXCode(),
2423
},
2524
setup: {
26-
dir: dir,
27-
packageJson: packageJson,
28-
tutorial: tutorial,
25+
hasDir: hasDir,
26+
hasPackageJson: hasPackageJson,
27+
hasTutorial: hasTutorial,
2928
}
3029
};
3130
checks.system.passed = allTrue(checks.system);

lib/reducers/page/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ function pageReducer(p, action) {
1010
if (p === void 0) { p = _page; }
1111
switch (action.type) {
1212
case _types_1.PAGE_SET:
13-
var pagePosition = action.payload.pagePosition;
14-
var _a = action.payload.tutorial.pages[pagePosition], title = _a.title, description = _a.description, onPageComplete = _a.onPageComplete, completed = _a.completed;
13+
var _a = action.payload, pagePosition = _a.pagePosition, tutorial = _a.tutorial;
14+
var _b = tutorial.pages[pagePosition], title = _b.title, description = _b.description, onPageComplete = _b.onPageComplete, completed = _b.completed;
1515
editor_1.clearConsole();
1616
return {
1717
title: title,

lib/reducers/progress/index.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,24 @@ function progressReducer(progress, action) {
99
if (progress === void 0) { progress = _progress; }
1010
switch (action.type) {
1111
case _types_1.PROGRESS_LOAD:
12-
var saved = local_storage_1.loadProgressFromLocalStorage();
12+
var tutorial = action.payload.tutorial;
13+
var saved = local_storage_1.loadProgressFromLocalStorage(tutorial);
1314
if (saved) {
1415
return saved;
1516
}
1617
return {
1718
completed: false,
18-
pages: action.payload.tutorial.pages.map(function () { return false; })
19+
pages: tutorial.pages.map(function () { return false; })
1920
};
2021
case _types_1.COMPLETE_PAGE:
21-
var pagePosition = action.payload.pagePosition;
22+
var _a = action.payload, tutorial = _a.tutorial, pagePosition = _a.pagePosition;
2223
progress.pages[pagePosition] = true;
23-
local_storage_1.saveToLocalStorage(progress);
24+
local_storage_1.saveToLocalStorage(tutorial, progress);
2425
return progress;
2526
case _types_1.COMPLETE_TUTORIAL:
27+
var tutorial = action.payload.tutorial.tutorial;
2628
progress.completed = true;
27-
local_storage_1.saveToLocalStorage(progress);
29+
local_storage_1.saveToLocalStorage(tutorial, progress);
2830
return progress;
2931
default:
3032
return progress;

lib/reducers/progress/local-storage.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
"use strict";
2-
var store_1 = require('../../store');
3-
function getLocalStorageKey() {
4-
return 'coderoad:' + store_1.default.getState().tutorial.name;
2+
function getLocalStorageKey(tutorial) {
3+
return 'coderoad:' + tutorial.name;
54
}
6-
function saveToLocalStorage(progress) {
5+
function saveToLocalStorage(tutorial, progress) {
76
try {
87
window.localStorage
9-
.setItem(getLocalStorageKey(), JSON.stringify(progress));
8+
.setItem(getLocalStorageKey(tutorial), JSON.stringify(progress));
109
}
1110
catch (e) {
1211
console.log('Error saving progress:', e);
1312
}
1413
}
1514
exports.saveToLocalStorage = saveToLocalStorage;
16-
function loadProgressFromLocalStorage() {
17-
var savedProgress = JSON.parse(window.localStorage.getItem(getLocalStorageKey()) || null);
15+
function loadProgressFromLocalStorage(tutorial) {
16+
var savedProgress = JSON.parse(window.localStorage.getItem(getLocalStorageKey(tutorial)) || null);
1817
if (savedProgress) {
1918
return savedProgress;
2019
}

lib/reducers/task-actions/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function taskActionsReducer(taskActions, action) {
2929
handleTaskActions(actions);
3030
return actions;
3131
case _types_1.TEST_RESULT:
32-
actions = action.payload.actions || [];
32+
actions = action.payload.taskActions || [];
3333
var nextTaskPosition = action.payload.result.taskPosition;
3434
var times = nextTaskPosition - taskTracker;
3535
if (times > 0) {

lib/reducers/task-tests/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ function taskTestsReducer(taskTests, action) {
55
if (taskTests === void 0) { taskTests = ''; }
66
switch (action.type) {
77
case _types_1.TESTS_LOAD:
8-
return [].concat.apply([], action.payload.tasks.map(function (task) { return task.tests || []; })).reduce(function (output, file) {
8+
var _a = action.payload, tutorial = _a.tutorial, tasks = _a.tasks;
9+
return [].concat.apply([], tasks.map(function (task) { return task.tests || []; })).reduce(function (output, file) {
910
try {
1011
output += fs_1.readFileSync(file, 'utf8') + '\n';
1112
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"use strict";
2+
var path_1 = require('path');
3+
var system_1 = require('../../services/system');
4+
function configTestString(dir, tutorial, config, name, testPath) {
5+
if (system_1.isWindows) {
6+
testPath = testPath.split('/').join('\\');
7+
}
8+
if (tutorial && tutorial.config.dir) {
9+
testPath = path_1.join(tutorial.config.dir, testPath);
10+
}
11+
else {
12+
testPath = path_1.join(dir, 'node_modules', name, testPath);
13+
}
14+
if (tutorial.config.testSuffix) {
15+
testPath += tutorial.config.testSuffix;
16+
}
17+
return testPath;
18+
}
19+
function configTaskTests(dir, tutorial, tasks) {
20+
var config = tutorial.config, name = tutorial.name;
21+
return !tasks ? [] : tasks.map(function (task) {
22+
if (task.tests) {
23+
task.tests = task.tests.map(function (testPath) {
24+
if (typeof testPath === 'string') {
25+
return configTestString(dir, tutorial, config, name, testPath);
26+
}
27+
else {
28+
console.error('Invalid task test', testPath);
29+
}
30+
});
31+
}
32+
return task;
33+
});
34+
}
35+
Object.defineProperty(exports, "__esModule", { value: true });
36+
exports.default = configTaskTests;

lib/reducers/tasks/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
var _types_1 = require('../../actions/_types');
3-
var config_task_tests_1 = require('../task-tests/config-task-tests');
3+
var config_task_tests_1 = require('./config-task-tests');
44
var _tasks = [{
55
actions: [],
66
completed: false,
@@ -12,8 +12,8 @@ function tasksReducer(tasks, action) {
1212
if (tasks === void 0) { tasks = _tasks; }
1313
switch (action.type) {
1414
case _types_1.PAGE_SET:
15-
var _a = action.payload, tutorial = _a.tutorial, pagePosition = _a.pagePosition;
16-
return config_task_tests_1.default(tutorial.pages[pagePosition].tasks || []);
15+
var _a = action.payload, dir = _a.dir, tutorial = _a.tutorial, pagePosition = _a.pagePosition;
16+
return config_task_tests_1.default(dir, tutorial, tutorial.pages[pagePosition].tasks || []);
1717
default:
1818
return tasks;
1919
}

lib/reducers/test-run/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ function runTestReducer(testRun, action) {
1111
var current = new Date().getTime();
1212
if (current - previous > pageTimeout) {
1313
previous = current;
14-
return run_1.runTaskTests();
14+
var _a = action.payload, taskTests = _a.taskTests, dir = _a.dir, tutorial = _a.tutorial, taskPosition = _a.taskPosition;
15+
return run_1.default(taskTests, dir, tutorial, taskPosition);
1516
}
1617
return false;
1718
case _types_1.TEST_COMPLETE:

lib/reducers/test-run/parse-loaders.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"use strict";
22
var path_1 = require('path');
33
var fs_1 = require('fs');
4-
var store_1 = require('../../store');
54
var comments = {
65
py: '#',
76
};
@@ -12,7 +11,7 @@ function loaderRegex(fileType) {
1211
}
1312
return new RegExp("^" + comment + " ?load\\(['\"](.+)['\"](, ?true)?\\)", 'm');
1413
}
15-
function parseLoaders(data, fileType) {
14+
function parseLoaders(data, fileType, tutorial, dir) {
1615
var i = -1;
1716
var lines = data.split('\n');
1817
var filesLoaded = [];
@@ -28,11 +27,10 @@ function parseLoaders(data, fileType) {
2827
}
2928
var pathToFile = null;
3029
if (loader[2]) {
31-
var tutorialDir = store_1.default.getState().tutorial.config.dir;
30+
var tutorialDir = tutorial.config.dir;
3231
pathToFile = path_1.normalize(path_1.join(tutorialDir, fileToLoad));
3332
}
3433
else {
35-
var dir = store_1.default.getState().dir;
3634
pathToFile = path_1.normalize(path_1.join(dir, fileToLoad));
3735
}
3836
try {

0 commit comments

Comments
 (0)