@@ -3,15 +3,13 @@ var snippets = JSON.parse(localStorage.scriptSnippets);
33console . log ( 'I have' , snippets . length , 'code snippets' ) ;
44console . table ( snippets ) ;
55
6+ // read code snippets from this repo
67var repo = 'https://rawgit.com/bahmutov/code-snippets/master/' ;
7- var filename = 'ng-idle-apply-timing.js' ;
88
99function 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