Skip to content

Commit 6e013ab

Browse files
committed
check if tutorial is latest, add update button
1 parent 7726b7d commit 6e013ab

File tree

35 files changed

+252
-152
lines changed

35 files changed

+252
-152
lines changed

lib/actions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ exports.tutorialSet = actions_10.tutorialSet;
3636
var actions_11 = require('./modules/tutorials/actions');
3737
exports.tutorialsFind = actions_11.tutorialsFind;
3838
exports.tutorialUpdate = actions_11.tutorialUpdate;
39+
exports.tutorialsUpdate = actions_11.tutorialsUpdate;
3940
var actions_12 = require('./modules/window/actions');
4041
exports.windowToggle = actions_12.windowToggle;
4142
exports.quit = actions_12.quit;

lib/components/Tutorials/UpdateTutorial/index.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ var UpdateTutorial = (function (_super) {
2626
UpdateTutorial.prototype.render = function () {
2727
var _a = this.props, tutorial = _a.tutorial, tutorialUpdate = _a.tutorialUpdate;
2828
return (React.createElement("span", null,
29-
React.createElement(update_1.default, {style: styles.icon, color: colors_1.pink500, onTouchTap: tutorialUpdate.bind(this, tutorial.name)}),
30-
"``",
31-
React.createElement("span", {style: styles.latest}, tutorial.latest)));
29+
React.createElement(update_1.default, {style: styles.icon, color: colors_1.pink500, onTouchTap: tutorialUpdate.bind(this, tutorial.name)})
30+
));
3231
};
3332
return UpdateTutorial;
3433
}(React.Component));

lib/components/Tutorials/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ var Tutorials = (function (_super) {
3636
),
3737
React.createElement(Table_1.TableRowColumn, null,
3838
tutorial.version,
39-
!!tutorial.latest
39+
!tutorial.latest
4040
? React.createElement(UpdateTutorial_1.default, {tutorial: tutorial})
4141
: null)));
4242
}))),

lib/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ var StatusBar_1 = require('./components/StatusBar');
55
var setup_1 = require('./modules/setup');
66
var store_1 = require('./store');
77
var subscriptions_1 = require('./subscriptions');
8-
var utils_1 = require('./utils');
8+
var polyfills_1 = require('./utils/polyfills');
99
var injectTapEventPlugin = require('react-tap-event-plugin');
1010
process.env.NODE_ENV = 'production';
1111
var Main = (function () {
1212
function Main() {
1313
injectTapEventPlugin();
14-
utils_1.default();
14+
polyfills_1.default();
1515
store_1.default.dispatch(setup_1.setupVerify());
1616
this.side = SidePanel_1.sideElement.init();
1717
this.subscriptions = new subscriptions_1.default();
Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,17 @@
11
"use strict";
2+
var compareVersions_1 = require('../../../utils/compareVersions');
3+
var system_1 = require('../../../utils/system');
24
var atom_plugin_command_line_1 = require('atom-plugin-command-line');
35
var versions = {
46
node: '4.0.0',
57
atom: '1.8.0',
68
npm: '3.0.0'
79
};
8-
function matchVersions(v) {
9-
return v.match(/([0-9]+)\.([0-9]+)/);
10-
}
11-
function isAboveVersion(a, b) {
12-
if (a === b) {
13-
return true;
14-
}
15-
var a_components = a.split('.');
16-
var b_components = b.split('.');
17-
var len = Math.min(a_components.length, b_components.length);
18-
for (var i = 0; i < len; i++) {
19-
var first = parseInt(a_components[i], 10);
20-
var second = parseInt(b_components[i], 10);
21-
if (first > second) {
22-
return true;
23-
}
24-
if (first < second) {
25-
return false;
26-
}
27-
}
28-
if (a_components.length > b_components.length) {
29-
return true;
30-
}
31-
if (a_components.length < b_components.length) {
32-
return false;
33-
}
34-
return true;
35-
}
3610
function minVersion(command) {
3711
var minVersion = versions[command];
3812
return new Promise(function (resolve, reject) {
3913
var minOrLater = atom_plugin_command_line_1.default(command, '-v')
40-
.then(function (res) { return isAboveVersion(res, minVersion); });
14+
.then(function (res) { return compareVersions_1.isAboveVersion(res, minVersion); });
4115
if (!minOrLater) {
4216
resolve(false);
4317
}
@@ -51,7 +25,7 @@ function atomMinVersion() {
5125
return new Promise(function (resolve, reject) {
5226
var minOrLater = atom_plugin_command_line_1.default('atom', '-v').then(function (res) {
5327
var match = res.match(/Atom\s+:\s+([0-9]\.[0-9]\.[0-9])/);
54-
if (match && match[1] && isAboveVersion(match[1], versions.atom)) {
28+
if (match && match[1] && compareVersions_1.isAboveVersion(match[1], versions.atom)) {
5529
resolve(true);
5630
}
5731
else {
@@ -61,8 +35,8 @@ function atomMinVersion() {
6135
});
6236
}
6337
exports.atomMinVersion = atomMinVersion;
64-
function requiresXCode() {
65-
if (!navigator.platform.match(/Mac/)) {
38+
function hasOrDoesNotRequireXCode() {
39+
if (!system_1.isMac) {
6640
return true;
6741
}
6842
return atom_plugin_command_line_1.default('xcode-select', '-v').then(function (res) {
@@ -72,4 +46,4 @@ function requiresXCode() {
7246
return false;
7347
});
7448
}
75-
exports.requiresXCode = requiresXCode;
49+
exports.hasOrDoesNotRequireXCode = hasOrDoesNotRequireXCode;

lib/modules/setup/utils/verify.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ function setupVerify(dir, packageJson) {
1818
system: {
1919
node: !!check_system_1.minVersion('node'),
2020
npm: !!check_system_1.minVersion('npm'),
21-
xcode: !!check_system_1.requiresXCode(),
21+
xcode: !!check_system_1.hasOrDoesNotRequireXCode,
2222
atom: !!check_system_1.atomMinVersion(),
2323
},
2424
setup: {

lib/modules/tutorials/actions.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@ function tutorialUpdate(title) {
1515
};
1616
}
1717
exports.tutorialUpdate = tutorialUpdate;
18+
function tutorialsUpdate() {
19+
return { type: types_1.TUTORIALS_UPDATE };
20+
}
21+
exports.tutorialsUpdate = tutorialsUpdate;
1822
function tutorialsFind() {
1923
return function (dispatch, getState) {
2024
var dir = getState().dir;
2125
dispatch({ type: types_1.TUTORIALS_FIND, payload: { dir: dir } });
26+
dispatch(tutorialsUpdate());
2227
};
2328
}
2429
exports.tutorialsFind = tutorialsFind;

lib/modules/tutorials/index.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
11
"use strict";
2-
var reducer_1 = require('./reducer');
3-
exports.reducer = reducer_1.default;
2+
var latestVersion_1 = require('./latestVersion');
3+
var types_1 = require('./types');
4+
var coderoad_cli_1 = require('coderoad-cli');
5+
function tutorialsReducer(t, action) {
6+
if (t === void 0) { t = []; }
7+
switch (action.type) {
8+
case types_1.TUTORIALS_FIND:
9+
var tuts = coderoad_cli_1.tutorials({ dir: action.payload.dir });
10+
return tuts ? tuts : t;
11+
case types_1.TUTORIALS_UPDATE:
12+
return t.map(function (tutorial) {
13+
var name = tutorial.name, version = tutorial.version;
14+
if (version) {
15+
latestVersion_1.default({ name: name, version: version })
16+
.then(function (x) { return tutorial.latest = x; });
17+
}
18+
return tutorial;
19+
});
20+
default:
21+
return t;
22+
}
23+
}
24+
Object.defineProperty(exports, "__esModule", { value: true });
25+
exports.default = tutorialsReducer;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"use strict";
2+
var compareVersions_1 = require('../../utils/compareVersions');
3+
var fetch_1 = require('../../utils/fetch');
4+
var npmApiCall = function (name) { return ("https://registry.npmjs.org/" + name); };
5+
function isLatestVersion(_a) {
6+
var name = _a.name, version = _a.version;
7+
return (fetch_1.default(npmApiCall(name))
8+
.then(function (res) {
9+
if (res) {
10+
var latest = JSON.parse(res)['dist-tags'].latest;
11+
return compareVersions_1.isAboveVersion(version, latest);
12+
}
13+
return false;
14+
}));
15+
}
16+
Object.defineProperty(exports, "__esModule", { value: true });
17+
exports.default = isLatestVersion;

lib/modules/tutorials/types.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
"use strict";
2-
exports.TUTORIAL_UPDATE = 'TUTORIAL_UPDATE';
32
exports.TUTORIALS_FIND = 'TUTORIALS_FIND';
3+
exports.TUTORIALS_UPDATE = 'TUTORIALS_UPDATE';
4+
exports.TUTORIAL_UPDATE = 'TUTORIAL_UPDATE';

0 commit comments

Comments
 (0)