diff --git a/client/commonFramework/end.js b/client/commonFramework/end.js index 323b0d41f9..c0cd76129d 100644 --- a/client/commonFramework/end.js +++ b/client/commonFramework/end.js @@ -7,12 +7,15 @@ $(document).ready(function() { init($); }); - common.editorKeyUp$ + const code$ = common.editorKeyUp$ .debounce(750) .map(() => common.editor.getValue()) .distinctUntilChanged() .doOnNext(() => console.log('updating value')) - .subscribe( + .shareReplay(); + + // update storage + code$.subscribe( code => { common.codeStorage.updateStorage(common.challengeName, code); common.codeUri.querify(code); @@ -20,6 +23,28 @@ $(document).ready(function() { err => console.error(err) ); + code$ + .flatMap(code => { + if (common.hasJs(code)) { + return common.detectLoops$(code) + .flatMap( + ({ err }) => err ? Observable.throw(err) : Observable.just(code) + ); + } + return Observable.just(code); + }) + .flatMap(code => common.updatePreview$(code)) + .catch(err => Observable.just({ err })) + .subscribe( + ({ err }) => { + if (err) { + return console.error(err); + } + console.log('updating preview'); + }, + err => console.error(err) + ); + common.resetBtn$ .doOnNext(() => { common.editor.setValue(common.replaceSafeTags(common.seed)); diff --git a/client/commonFramework/execute-challenge-stream.js b/client/commonFramework/execute-challenge-stream.js index 57196e2312..86541bbb70 100644 --- a/client/commonFramework/execute-challenge-stream.js +++ b/client/commonFramework/execute-challenge-stream.js @@ -60,20 +60,6 @@ window.common = (function(global) { }); } - if (common.challengeType === '0') { - let openingComments = code.match(/\<\!\-\-/gi); - let closingComments = code.match(/\-\-\>/gi) || []; - if ( - openingComments && - openingComments.length > closingComments.length - ) { - return Observable.throw({ - err: 'SyntaxError: Unfinished HTML comment', - code - }); - } - } - if (code.match(detectUnsafeConsoleCall)) { return Observable.throw({ err: 'Invalid if (null) console.log(1); detected', diff --git a/client/commonFramework/update-preview.js b/client/commonFramework/update-preview.js index 09af6725fa..e8acb518d7 100644 --- a/client/commonFramework/update-preview.js +++ b/client/commonFramework/update-preview.js @@ -43,7 +43,7 @@ window.common = (function(global) { .map(script => ``) .flatMap(script => { preview.open(); - preview.write(libraryIncludes + code + script); + preview.write(libraryIncludes + code + '' + script); preview.close(); return Observable.fromCallback($(preview).ready, $(preview))() .first()