Skip to content

Commit 3611a29

Browse files
committed
remove store dependencies, use redux thunks
1 parent 3993e54 commit 3611a29

File tree

27 files changed

+256
-181
lines changed

27 files changed

+256
-181
lines changed

lib/actions/alert.js

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
"use strict";
2-
var store_1 = require('../store');
32
var _types_1 = require('./_types');
43
function alertToggle(alert) {
5-
var isOpen = store_1.default.getState().alert.open;
6-
if (!alert) {
7-
alert = {
8-
action: '',
9-
message: '',
10-
open: false,
11-
};
12-
}
13-
else {
14-
alert = Object.assign({}, { open: !isOpen }, alert);
15-
}
16-
return { type: _types_1.ALERT_TOGGLE, payload: { alert: alert } };
4+
return function (dispatch, getState) {
5+
var isOpen = getState().alert.open;
6+
if (!alert) {
7+
alert = {
8+
action: '',
9+
message: '',
10+
open: false,
11+
};
12+
}
13+
else {
14+
alert = Object.assign({}, { open: !isOpen }, alert);
15+
}
16+
dispatch({ type: _types_1.ALERT_TOGGLE, payload: { alert: alert } });
17+
};
1718
}
1819
exports.alertToggle = alertToggle;
1920
function alertReplay() {

lib/actions/package.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
"use strict";
22
var _types_1 = require('./_types');
3-
var store_1 = require('../store');
43
function packageSet() {
5-
var dir = store_1.default.getState().dir;
6-
return { type: _types_1.PACKAGE_SET, payload: { dir: dir } };
4+
return function (dispatch, getState) {
5+
var dir = getState().dir;
6+
dispatch({ type: _types_1.PACKAGE_SET, payload: { dir: dir } });
7+
};
78
}
89
exports.packageSet = packageSet;

lib/actions/page.js

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,39 @@
11
"use strict";
22
var test_1 = require('./test');
33
var _types_1 = require('./_types');
4-
var store_1 = require('../store');
54
function pageNext() {
6-
var _a = store_1.default.getState(), pagePosition = _a.pagePosition, tutorial = _a.tutorial;
7-
var pages = tutorial.pages;
8-
if (pagePosition >= pages.length - 1) {
9-
return { type: _types_1.ROUTE_SET, payload: { route: 'final' } };
10-
}
11-
else {
12-
pagePosition += 1;
13-
setTimeout(function () { return store_1.default.dispatch(test_1.testsLoad(pagePosition)); });
14-
return pageSet(pagePosition);
15-
}
5+
return function (dispatch, getState) {
6+
var _a = getState(), pagePosition = _a.pagePosition, tutorial = _a.tutorial;
7+
var pages = tutorial.pages;
8+
if (pagePosition >= pages.length - 1) {
9+
dispatch({ type: _types_1.ROUTE_SET, payload: { route: 'final' } });
10+
}
11+
else {
12+
pagePosition += 1;
13+
dispatch(pageSet(pagePosition));
14+
dispatch(test_1.testsLoad(pagePosition));
15+
}
16+
};
1617
}
1718
exports.pageNext = pageNext;
1819
function pageSet(pagePosition) {
1920
if (pagePosition === void 0) { pagePosition = 0; }
20-
var _a = store_1.default.getState(), dir = _a.dir, progress = _a.progress, tutorial = _a.tutorial;
21-
if (pagePosition >= progress.pages.length) {
22-
return { type: _types_1.ROUTE_SET, payload: { route: 'final' } };
23-
}
24-
return { type: _types_1.PAGE_SET, payload: { dir: dir, pagePosition: pagePosition, tutorial: tutorial, progress: progress } };
21+
return function (dispatch, getState) {
22+
var _a = getState(), dir = _a.dir, progress = _a.progress, tutorial = _a.tutorial;
23+
if (pagePosition >= progress.pages.length) {
24+
dispatch({ type: _types_1.ROUTE_SET, payload: { route: 'final' } });
25+
}
26+
dispatch({
27+
type: _types_1.PAGE_SET, payload: { dir: dir, pagePosition: pagePosition, tutorial: tutorial, progress: progress }
28+
});
29+
};
2530
}
2631
exports.pageSet = pageSet;
2732
function pagePositionLoad() {
28-
var progress = store_1.default.getState().progress;
29-
return { type: _types_1.PAGE_POSITION_LOAD, payload: { progress: progress } };
33+
return function (dispatch, getState) {
34+
var progress = getState().progress;
35+
dispatch({ type: _types_1.PAGE_POSITION_LOAD, payload: { progress: progress } });
36+
};
3037
}
3138
exports.pagePositionLoad = pagePositionLoad;
3239
function pagePositionSet(pagePosition) {

lib/actions/progress.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
"use strict";
22
var _types_1 = require('./_types');
33
var page_1 = require('./page');
4-
var store_1 = require('../store');
54
function progressLoad() {
6-
setTimeout(function () { return store_1.default.dispatch(page_1.pagePositionLoad()); });
7-
var tutorial = store_1.default.getState().tutorial;
8-
return { type: _types_1.PROGRESS_LOAD, payload: { tutorial: tutorial } };
5+
return function (dispatch, getState) {
6+
var tutorial = getState().tutorial;
7+
dispatch({ type: _types_1.PROGRESS_LOAD, payload: { tutorial: tutorial } });
8+
dispatch(page_1.pagePositionLoad());
9+
};
910
}
1011
exports.progressLoad = progressLoad;
1112
function completePage() {
12-
var _a = store_1.default.getState(), pagePosition = _a.pagePosition, progress = _a.progress, tutorial = _a.tutorial;
13-
if (progress.pages.every(function (x) { return x.completed; })) {
14-
store_1.default.dispatch(completeTutorial());
15-
}
16-
return { type: _types_1.COMPLETE_PAGE, payload: { pagePosition: pagePosition, tutorial: tutorial } };
13+
return function (dispatch, getState) {
14+
var _a = getState(), pagePosition = _a.pagePosition, progress = _a.progress, tutorial = _a.tutorial;
15+
if (progress.pages.every(function (x) { return x.completed; })) {
16+
dispatch(completeTutorial());
17+
}
18+
dispatch({ type: _types_1.COMPLETE_PAGE, payload: { pagePosition: pagePosition, tutorial: tutorial } });
19+
};
1720
}
1821
exports.completePage = completePage;
1922
function completeTutorial() {
20-
var tutorial = store_1.default.getState().tutorial;
21-
return { type: _types_1.COMPLETE_TUTORIAL, payload: { tutorial: tutorial } };
23+
return function (dispatch, getState) {
24+
var tutorial = getState().tutorial;
25+
dispatch({ type: _types_1.COMPLETE_TUTORIAL, payload: { tutorial: tutorial } });
26+
};
2227
}
2328
exports.completeTutorial = completeTutorial;

lib/actions/route.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
"use strict";
2-
var store_1 = require('../store');
32
var _types_1 = require('./_types');
43
var tutorial_1 = require('./tutorial');
54
var previous = null;
65
function routeSet(route) {
76
if (route && route !== previous) {
8-
switch (route) {
9-
case 'tutorials':
10-
store_1.default.dispatch(tutorial_1.tutorialsFind());
11-
}
12-
previous = route;
13-
return { type: _types_1.ROUTE_SET, payload: { route: route } };
7+
return function (dispatch) {
8+
switch (route) {
9+
case 'tutorials':
10+
dispatch(tutorial_1.tutorialsFind());
11+
}
12+
previous = route;
13+
dispatch({ type: _types_1.ROUTE_SET, payload: { route: route } });
14+
};
1415
}
1516
}
1617
exports.routeSet = routeSet;

lib/actions/setup.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
"use strict";
22
var _types_1 = require('./_types');
33
var package_1 = require('./package');
4-
var store_1 = require('../store');
54
function setupVerify() {
6-
store_1.default.dispatch(package_1.packageSet());
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 } };
5+
return function (dispatch, getState) {
6+
dispatch(package_1.packageSet());
7+
var _a = getState(), dir = _a.dir, packageJson = _a.packageJson;
8+
dispatch({ type: _types_1.SETUP_VERIFY, payload: { dir: dir, packageJson: packageJson } });
9+
};
910
}
1011
exports.setupVerify = setupVerify;

lib/actions/test.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
"use strict";
22
var _types_1 = require('./_types');
3-
var store_1 = require('../store');
43
function testRun() {
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 } };
4+
return function (dispatch, getState) {
5+
var _a = getState(), taskTests = _a.taskTests, dir = _a.dir, tutorial = _a.tutorial, taskPosition = _a.taskPosition;
6+
dispatch({
7+
type: _types_1.TEST_RUN, payload: { taskTests: taskTests, dir: dir, tutorial: tutorial, taskPosition: taskPosition }
8+
});
9+
};
710
}
811
exports.testRun = testRun;
912
function testResult(result) {
10-
var taskActions = store_1.default.getState().taskActions;
11-
return { type: _types_1.TEST_RESULT, payload: { result: result, taskActions: taskActions } };
13+
return function (dispatch, getState) {
14+
var taskActions = getState().taskActions;
15+
dispatch({ type: _types_1.TEST_RESULT, payload: { result: result, taskActions: taskActions } });
16+
};
1217
}
1318
exports.testResult = testResult;
1419
function testComplete() {
@@ -20,9 +25,13 @@ function testSave() {
2025
}
2126
exports.testSave = testSave;
2227
function testsLoad(pagePosition) {
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-
} };
28+
return function (dispatch, getState) {
29+
var _a = getState(), tasks = _a.tasks, progress = _a.progress, tutorial = _a.tutorial, dir = _a.dir;
30+
dispatch({
31+
type: _types_1.TESTS_LOAD, payload: {
32+
pagePosition: pagePosition, tasks: tasks, progress: progress, tutorial: tutorial, dir: dir
33+
}
34+
});
35+
};
2736
}
2837
exports.testsLoad = testsLoad;

lib/actions/tutorial.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
"use strict";
22
var _types_1 = require('./_types');
3-
var store_1 = require('../store');
43
function tutorialSet(name) {
5-
var dir = store_1.default.getState().dir;
6-
return { type: _types_1.TUTORIAL_SET, payload: { name: name, dir: dir } };
4+
return function (dispatch, getState) {
5+
var dir = getState().dir;
6+
dispatch({ type: _types_1.TUTORIAL_SET, payload: { name: name, dir: dir } });
7+
};
78
}
89
exports.tutorialSet = tutorialSet;
910
function tutorialUpdate(name) {
1011
return { type: _types_1.TUTORIAL_UPDATE, payload: { name: name } };
1112
}
1213
exports.tutorialUpdate = tutorialUpdate;
1314
function tutorialsFind() {
14-
var _a = store_1.default.getState(), packageJson = _a.packageJson, dir = _a.dir;
15-
return { type: _types_1.TUTORIALS_FIND, payload: { packageJson: packageJson, dir: dir } };
15+
return function (dispatch, getState) {
16+
var _a = getState(), packageJson = _a.packageJson, dir = _a.dir;
17+
dispatch({ type: _types_1.TUTORIALS_FIND, payload: { packageJson: packageJson, dir: dir } });
18+
};
1619
}
1720
exports.tutorialsFind = tutorialsFind;

lib/reducers/checks/action-setup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var editor_1 = require('../../atom/editor');
44
var editor_2 = require('../../atom/editor');
55
var actions_1 = require('../../actions');
66
var store_1 = require('../../store');
7-
var packageData = "{\n \"name\": \"demo\",\n \"dependencies\": {\n \"coderoad-functional-school\": \"^0.2.1\"\n }\n}";
7+
var packageData = "{\n \"name\": \"demo\",\n \"dependencies\": {\n \"coderoad-functional-school\": \"^0.2.2\"\n }\n}";
88
function createPackageJson(dir) {
99
var packagePath = path_1.join(dir, 'package.json');
1010
return new Promise(function (resolve, reject) {

lib/reducers/package-json/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ function packageJsonReducer(pj, action) {
77
if (pj === void 0) { pj = null; }
88
switch (action.type) {
99
case _types_1.PACKAGE_SET:
10-
var pathToPackageJson = path_1.join(action.payload.dir, 'package.json');
10+
var dir = action.payload.dir;
11+
var pathToPackageJson = path_1.join(dir, 'package.json');
1112
if (exists_1.fileExists(pathToPackageJson)) {
1213
return JSON.parse(fs_1.readFileSync(pathToPackageJson, 'utf8'));
1314
}

lib/store/index.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
"use strict";
22
var redux_1 = require('redux');
33
var reducers_1 = require('../reducers');
4+
var redux_thunk_1 = require('redux-thunk');
45
var createLogger = require('redux-logger');
6+
var middlewares = [redux_thunk_1.default];
57
var devMode = false;
6-
var store = null;
78
if (devMode) {
89
var logger = createLogger();
9-
store = redux_1.createStore(reducers_1.default, redux_1.applyMiddleware(logger));
10-
}
11-
else {
12-
var initialState = {};
13-
store = redux_1.createStore(reducers_1.default, initialState);
10+
middlewares.push(logger);
1411
}
12+
var store = redux_1.createStore(reducers_1.default, redux_1.applyMiddleware.apply(void 0, middlewares));
1513
Object.defineProperty(exports, "__esModule", { value: true });
1614
exports.default = store;

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@
4747
"react-redux": "4.4.5",
4848
"react-tap-event-plugin": "1.0.0",
4949
"redux": "3.5.2",
50-
"redux-logger": "2.6.1"
50+
"redux-logger": "2.6.1",
51+
"redux-thunk": "^2.0.1"
5152
},
5253
"scripts": {
5354
"compile": "tsc"

src/actions/alert.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
import store from '../store';
21
import {ALERT_TOGGLE, ALERT_REPLAY} from './_types';
32

4-
export function alertToggle(alert?: CR.Alert): Action {
5-
const isOpen = store.getState().alert.open;
6-
if (!alert) {
7-
alert = {
8-
action: '',
9-
message: '',
10-
open: false,
11-
};
12-
} else {
13-
alert = Object.assign({}, { open: !isOpen }, alert);
14-
}
15-
return { type: ALERT_TOGGLE, payload: { alert } };
3+
export function alertToggle(alert?: CR.Alert): ReduxThunk.ThunkInterface {
4+
return (dispatch, getState): void => {
5+
const isOpen = getState().alert.open;
6+
if (!alert) {
7+
alert = {
8+
action: '',
9+
message: '',
10+
open: false,
11+
};
12+
} else {
13+
alert = Object.assign({}, { open: !isOpen }, alert);
14+
}
15+
dispatch({ type: ALERT_TOGGLE, payload: { alert } });
16+
};
1617
}
1718

1819
export function alertReplay(): Action {

src/actions/package.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import {PACKAGE_SET} from './_types';
2-
import store from '../store';
32

4-
export function packageSet(): Action {
5-
const {dir} = store.getState();
6-
return { type: PACKAGE_SET, payload: { dir } };
3+
export function packageSet(): ReduxThunk.ThunkInterface {
4+
return (dispatch, getState): void => {
5+
const {dir} = getState();
6+
dispatch({ type: PACKAGE_SET, payload: { dir } });
7+
};
78
}

0 commit comments

Comments
 (0)