Skip to content

Commit bf4079e

Browse files
committed
refactor out all UI events into reducers
1 parent 163c3ff commit bf4079e

File tree

26 files changed

+226
-47
lines changed

26 files changed

+226
-47
lines changed

lib/actions/_types.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@ exports.ALERT_REPLAY = 'ALERT_REPLAY';
33
exports.ALERT_TOGGLE = 'ALERT_TOGGLE';
44
exports.COMPLETE_PAGE = 'COMPLETE_PAGE';
55
exports.COMPLETE_TUTORIAL = 'COMPLETE_TUTORIAL';
6+
exports.DEVTOOLS_TOGGLE = 'DEVTOOLS_TOGGLE';
67
exports.HINT_POSITION_SET = 'HINT_POSITION_SET';
78
exports.HINT_SHOW = 'HINT_SHOW';
89
exports.PACKAGE_SET = 'PACKAGE_SET';
910
exports.PAGE_SET = 'PAGE_SET';
1011
exports.PAGE_POSITION_LOAD = 'POSITION_LOAD';
1112
exports.PAGE_POSITION_SET = 'POSITION_SET';
1213
exports.PROGRESS_LOAD = 'PROGRESS_LOAD';
14+
exports.QUIT = 'QUIT';
1315
exports.ROUTE_SET = 'ROUTE_SET';
16+
exports.TEST_SAVE = 'TEST_SAVE';
1417
exports.SETUP_VERIFY = 'SETUP_VERIFY';
1518
exports.TEST_COMPLETE = 'TEST_COMPLETE';
1619
exports.TEST_RESULT = 'TEST_RESULT';

lib/actions/index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ var test_1 = require('./test');
2222
exports.testRun = test_1.testRun;
2323
exports.testComplete = test_1.testComplete;
2424
exports.testResult = test_1.testResult;
25+
exports.testSave = test_1.testSave;
2526
exports.testsLoad = test_1.testsLoad;
2627
var tutorial_1 = require('./tutorial');
2728
exports.tutorialsFind = tutorial_1.tutorialsFind;
2829
exports.tutorialSet = tutorial_1.tutorialSet;
2930
exports.tutorialUpdate = tutorial_1.tutorialUpdate;
30-
var window_1 = require('./window');
31-
exports.windowToggle = window_1.windowToggle;
31+
var toggle_1 = require('./toggle');
32+
exports.windowToggle = toggle_1.windowToggle;
33+
exports.devToolsToggle = toggle_1.devToolsToggle;
34+
exports.quit = toggle_1.quit;

lib/actions/test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ function testComplete() {
1717
return { type: _types_1.TEST_COMPLETE };
1818
}
1919
exports.testComplete = testComplete;
20+
function testSave() {
21+
return { type: _types_1.TEST_SAVE };
22+
}
23+
exports.testSave = testSave;
2024
function testsLoad(pagePosition) {
2125
return { type: _types_1.TESTS_LOAD, payload: { pagePosition: pagePosition } };
2226
}

lib/actions/toggle.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"use strict";
2+
var _types_1 = require('./_types');
3+
function windowToggle() {
4+
return { type: _types_1.WINDOW_TOGGLE };
5+
}
6+
exports.windowToggle = windowToggle;
7+
function devToolsToggle() {
8+
return { type: _types_1.DEVTOOLS_TOGGLE };
9+
}
10+
exports.devToolsToggle = devToolsToggle;
11+
function quit() {
12+
return { type: _types_1.QUIT };
13+
}
14+
exports.quit = quit;

lib/components/AppMenu/Quit/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
1616
var React = require('react');
1717
var react_redux_1 = require('react-redux');
1818
var actions_1 = require('../../../actions');
19-
var subscriptions_1 = require('../../../atom/subscriptions');
2019
var MenuItem_1 = require('material-ui/MenuItem');
2120
var styles = {
2221
textAlign: 'center',
@@ -34,8 +33,7 @@ var Quit = (function (_super) {
3433
react_redux_1.connect(null, function (dispatch) {
3534
return {
3635
quit: function () {
37-
dispatch(actions_1.windowToggle());
38-
subscriptions_1.onDeactivate();
36+
dispatch(actions_1.quit());
3937
}
4038
};
4139
}),
Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,41 @@
11
"use strict";
2+
var __extends = (this && this.__extends) || function (d, b) {
3+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
4+
function __() { this.constructor = d; }
5+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6+
};
7+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11+
return c > 3 && r && Object.defineProperty(target, key, r), r;
12+
};
13+
var __metadata = (this && this.__metadata) || function (k, v) {
14+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
15+
};
216
var React = require('react');
17+
var react_redux_1 = require('react-redux');
318
var FlatButton_1 = require('material-ui/FlatButton');
4-
var editor_1 = require('../../../../atom/editor');
5-
var Save = function () { return (React.createElement(FlatButton_1.default, {label: 'Save', secondary: true, onTouchTap: editor_1.save})); };
19+
var actions_1 = require('../../../../actions');
20+
var Save = (function (_super) {
21+
__extends(Save, _super);
22+
function Save() {
23+
_super.apply(this, arguments);
24+
}
25+
Save.prototype.render = function () {
26+
return (React.createElement(FlatButton_1.default, {label: 'Save', secondary: true, onTouchTap: this.props.save}));
27+
};
28+
Save = __decorate([
29+
react_redux_1.connect(null, function (dispatch, state) {
30+
return {
31+
save: function () {
32+
dispatch(actions_1.testSave());
33+
}
34+
};
35+
}),
36+
__metadata('design:paramtypes', [])
37+
], Save);
38+
return Save;
39+
}(React.Component));
640
Object.defineProperty(exports, "__esModule", { value: true });
741
exports.default = Save;
Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,43 @@
11
"use strict";
2+
var __extends = (this && this.__extends) || function (d, b) {
3+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
4+
function __() { this.constructor = d; }
5+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6+
};
7+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11+
return c > 3 && r && Object.defineProperty(target, key, r), r;
12+
};
13+
var __metadata = (this && this.__metadata) || function (k, v) {
14+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
15+
};
216
var React = require('react');
317
var code_1 = require('material-ui/svg-icons/action/code');
4-
var editor_1 = require('../../../../atom/editor');
18+
var react_redux_1 = require('react-redux');
19+
var actions_1 = require('../../../../actions');
520
var FlatButton_1 = require('material-ui/FlatButton');
6-
var ToggleLog = function () { return (React.createElement(FlatButton_1.default, {icon: React.createElement(code_1.default, null), onTouchTap: editor_1.toggleDevTools})); };
21+
var ToggleLog = (function (_super) {
22+
__extends(ToggleLog, _super);
23+
function ToggleLog() {
24+
_super.apply(this, arguments);
25+
}
26+
ToggleLog.prototype.render = function () {
27+
return (React.createElement(FlatButton_1.default, {icon: React.createElement(code_1.default, null), onTouchTap: this.props.toggleDevTools}));
28+
};
29+
;
30+
ToggleLog = __decorate([
31+
react_redux_1.connect(null, function (dispatch, state) {
32+
return {
33+
toggleDevTools: function () {
34+
dispatch(actions_1.devToolsToggle());
35+
}
36+
};
37+
}),
38+
__metadata('design:paramtypes', [])
39+
], ToggleLog);
40+
return ToggleLog;
41+
}(React.Component));
742
Object.defineProperty(exports, "__esModule", { value: true });
843
exports.default = ToggleLog;

lib/reducers/devTools-toggle/index.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
var _types_1 = require('../../actions/_types');
3+
var editor_1 = require('../../atom/editor');
4+
function devToolsToggleReducer(open, action) {
5+
if (open === void 0) { open = false; }
6+
switch (action.type) {
7+
case _types_1.DEVTOOLS_TOGGLE:
8+
editor_1.toggleDevTools();
9+
return !open;
10+
default:
11+
return open;
12+
}
13+
}
14+
Object.defineProperty(exports, "__esModule", { value: true });
15+
exports.default = devToolsToggleReducer;

lib/reducers/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
var redux_1 = require('redux');
33
var alert_1 = require('./alert');
44
var checks_1 = require('./checks');
5+
var devTools_toggle_1 = require('./devTools-toggle');
56
var dir_1 = require('./dir');
67
var task_actions_1 = require('./task-actions');
78
var hint_position_1 = require('./hint-position');
@@ -19,7 +20,7 @@ var tutorial_list_1 = require('./tutorial-list');
1920
var window_toggle_1 = require('./window-toggle');
2021
Object.defineProperty(exports, "__esModule", { value: true });
2122
exports.default = redux_1.combineReducers({
22-
alert: alert_1.default, checks: checks_1.default, dir: dir_1.default, taskActions: task_actions_1.default, hintPosition: hint_position_1.default, page: page_1.default,
23+
alert: alert_1.default, checks: checks_1.default, dir: dir_1.default, devToolsToggle: devTools_toggle_1.default, taskActions: task_actions_1.default, hintPosition: hint_position_1.default, page: page_1.default,
2324
packageJson: package_json_1.default, pagePosition: page_position_1.default, progress: progress_1.default, route: route_1.default, taskPosition: task_position_1.default,
2425
taskTests: task_tests_1.default, tasks: tasks_1.default, testRun: test_run_1.default, tutorial: tutorial_1.default, tutorialList: tutorial_list_1.default, windowToggle: window_toggle_1.default
2526
});

lib/reducers/test-run/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use strict";
22
var _types_1 = require('../../actions/_types');
33
var run_1 = require('./run');
4+
var editor_1 = require('../../atom/editor');
45
var pageTimeout = 800;
56
var previous = new Date().getTime();
67
function runTestReducer(testRun, action) {
@@ -18,6 +19,8 @@ function runTestReducer(testRun, action) {
1819
case _types_1.PAGE_SET:
1920
previous = new Date().getTime();
2021
return false;
22+
case _types_1.TEST_SAVE:
23+
editor_1.save();
2124
default:
2225
return testRun;
2326
}

lib/reducers/window-toggle/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
"use strict";
22
var _types_1 = require('../../actions/_types');
3+
var subscriptions_1 = require('../../atom/subscriptions');
34
function windowToggleReducer(open, action) {
45
if (open === void 0) { open = false; }
56
switch (action.type) {
67
case _types_1.WINDOW_TOGGLE:
78
return !open;
9+
case _types_1.QUIT:
10+
subscriptions_1.onDeactivate();
11+
return false;
812
default:
913
return open;
1014
}

src/actions/_types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ export const ALERT_REPLAY = 'ALERT_REPLAY';
22
export const ALERT_TOGGLE = 'ALERT_TOGGLE';
33
export const COMPLETE_PAGE = 'COMPLETE_PAGE';
44
export const COMPLETE_TUTORIAL = 'COMPLETE_TUTORIAL';
5+
export const DEVTOOLS_TOGGLE = 'DEVTOOLS_TOGGLE';
56
export const HINT_POSITION_SET = 'HINT_POSITION_SET';
67
export const HINT_SHOW = 'HINT_SHOW';
78
export const PACKAGE_SET = 'PACKAGE_SET';
89
export const PAGE_SET = 'PAGE_SET';
910
export const PAGE_POSITION_LOAD = 'POSITION_LOAD';
1011
export const PAGE_POSITION_SET = 'POSITION_SET';
1112
export const PROGRESS_LOAD = 'PROGRESS_LOAD';
13+
export const QUIT = 'QUIT';
1214
export const ROUTE_SET = 'ROUTE_SET';
15+
export const TEST_SAVE = 'TEST_SAVE';
1316
export const SETUP_VERIFY = 'SETUP_VERIFY';
1417
export const TEST_COMPLETE = 'TEST_COMPLETE';
1518
export const TEST_RESULT = 'TEST_RESULT';

src/actions/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ export {pageSet, pageNext, pagePositionLoad, pagePositionSet} from './page';
77
export {routeSet} from './route';
88
export {setupVerify} from './setup';
99
export {
10-
testRun, testComplete, testResult, testsLoad
10+
testRun, testComplete, testResult, testSave, testsLoad
1111
} from './test';
1212
export {
1313
tutorialsFind, tutorialSet, tutorialUpdate
1414
} from './tutorial';
15-
export {windowToggle} from './window';
15+
export {windowToggle, devToolsToggle, quit} from './toggle';

src/actions/test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {
2-
TEST_RUN, TEST_RESULT, TEST_COMPLETE, TESTS_LOAD
2+
TEST_RUN, TEST_RESULT, TEST_COMPLETE, TESTS_LOAD, TEST_SAVE
33
} from './_types';
44
import store from '../store';
55

@@ -19,6 +19,10 @@ export function testComplete(): Action {
1919
return { type: TEST_COMPLETE };
2020
}
2121

22+
export function testSave(): Action {
23+
return { type: TEST_SAVE };
24+
}
25+
2226
export function testsLoad(pagePosition: CR.PagePosition): Action {
2327
return { type: TESTS_LOAD, payload: { pagePosition } };
2428
}

src/actions/toggle.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import {WINDOW_TOGGLE, DEVTOOLS_TOGGLE, QUIT} from './_types';
2+
3+
export function windowToggle(): Action {
4+
return { type: WINDOW_TOGGLE };
5+
}
6+
7+
export function devToolsToggle(): Action {
8+
return { type: DEVTOOLS_TOGGLE };
9+
}
10+
11+
export function quit(): Action {
12+
return { type: QUIT };
13+
}

src/actions/window.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/components/AppMenu/Quit/index.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as React from 'react';
22
import {connect} from 'react-redux';
3-
import {windowToggle} from '../../../actions';
4-
import {onDeactivate} from '../../../atom/subscriptions';
3+
import {quit} from '../../../actions';
54
import MenuItem from 'material-ui/MenuItem';
65

76
const styles = {
@@ -12,8 +11,7 @@ const styles = {
1211
@connect(null, (dispatch) => {
1312
return {
1413
quit: () => {
15-
dispatch(windowToggle());
16-
onDeactivate();
14+
dispatch(quit());
1715
}
1816
};
1917
})

src/components/FinalPage/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import * as React from 'react';
2-
import * as ReactDOM from 'react-dom';
32
import Paper from 'material-ui/Paper';
43
import Divider from 'material-ui/Divider';
54
import {Card, CardTitle, CardText, CardActions} from 'material-ui/Card';
Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
11
import * as React from 'react';
2+
import {connect} from 'react-redux';
23
import FlatButton from 'material-ui/FlatButton';
3-
import {save} from '../../../../atom/editor';
4+
import {testSave} from '../../../../actions';
45

5-
const Save = () => (
6-
<FlatButton
7-
label='Save'
8-
secondary={true}
9-
onTouchTap={save}
10-
/>
11-
);
12-
export default Save;
6+
@connect(null, (dispatch, state) => {
7+
return {
8+
save: () => {
9+
dispatch(testSave());
10+
}
11+
};
12+
})
13+
export default class Save extends React.Component<{
14+
save?: any
15+
}, {}> {
16+
render() {
17+
return (
18+
<FlatButton
19+
label='Save'
20+
secondary={true}
21+
onTouchTap={this.props.save}
22+
/>
23+
);
24+
}
25+
}
Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,27 @@
11
import * as React from 'react';
22
import Code from 'material-ui/svg-icons/action/code';
3-
import {toggleDevTools} from '../../../../atom/editor';
3+
import {connect} from 'react-redux';
4+
import {devToolsToggle} from '../../../../actions';
45
import FlatButton from 'material-ui/FlatButton';
56

6-
const ToggleLog = () => (
7-
<FlatButton
8-
icon={
9-
<Code />
7+
@connect(null, (dispatch, state) => {
8+
return {
9+
toggleDevTools: () => {
10+
dispatch(devToolsToggle());
1011
}
11-
onTouchTap={toggleDevTools}
12-
/>
13-
);
14-
export default ToggleLog;
12+
};
13+
})
14+
export default class ToggleLog extends React.Component<{
15+
toggleDevTools?: any
16+
}, {}> {
17+
render() {
18+
return (
19+
<FlatButton
20+
icon={
21+
<Code />
22+
}
23+
onTouchTap={this.props.toggleDevTools}
24+
/>
25+
);
26+
};
27+
}

0 commit comments

Comments
 (0)