Skip to content

Commit 86c3b7a

Browse files
committed
updating code snippets from remote url is working
1 parent 0a8e706 commit 86c3b7a

File tree

1 file changed

+37
-11
lines changed

1 file changed

+37
-11
lines changed

update-code-snippets.js

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ var snippets = JSON.parse(localStorage.scriptSnippets);
33
console.log('I have', snippets.length, 'code snippets');
44
console.table(snippets);
55

6+
// read code snippets from this repo
67
var repo = 'https://rawgit.com/bahmutov/code-snippets/master/';
7-
var filename = 'ng-idle-apply-timing.js';
88

99
function fetch(url) {
1010
return new Promise(function (resolve, reject) {
1111
var request = new XMLHttpRequest();
1212
request.open('GET', url, true);
13-
// request.setRequestHeader('Access-Control-Allow-Origin', '*');
14-
// request.setRequestHeader('Access-Control-Allow-Headers', '*');
1513

1614
request.onload = function () {
1715
if (request.status >= 200 && request.status < 400) {
@@ -25,17 +23,45 @@ function fetch(url) {
2523
reject(err);
2624
};
2725

28-
2926
request.send();
27+
});
28+
}
29+
30+
var updated = [];
31+
32+
function updateSnippet(k, id, filename) {
33+
return fetch(repo + filename)
34+
.then(function (source) {
35+
console.log('fetched new source for', id, filename);
36+
// console.log(source);
37+
updated.push({
38+
index: k,
39+
id: id,
40+
content: source,
41+
name: filename
42+
});
43+
}, function () {
44+
console.error('cannot find remote for', filename);
45+
});
46+
}
3047

31-
// 'Content-Type': 'text/javascript; charset=utf-8'
48+
function chainSnippet(chain, snippet, k) {
49+
return chain.then(function () {
50+
return updateSnippet(k, snippet.id, snippet.name);
3251
});
3352
}
3453

35-
fetch(repo + filename)
36-
.then(function (source) {
37-
console.log('fetched new source for', filename);
38-
console.log(source);
39-
}, function (err) {
40-
throw err;
54+
var allChecked = snippets.reduce(chainSnippet, Promise.resolve());
55+
allChecked.then(function () {
56+
console.log('fetched', updated.length, 'snippets');
57+
updated.forEach(function (update) {
58+
var snippet = snippets[update.index];
59+
console.assert(update.name === snippet.name,
60+
'name mismatch for update', update, snippet);
61+
snippet.content = update.content;
4162
});
63+
if (updated.length) {
64+
localStorage.scriptSnippets = JSON.stringify(snippets);
65+
}
66+
console.table(updated);
67+
});

0 commit comments

Comments
 (0)