diff --git a/app/assets/main.html b/app/assets/main.html index 810cf0cf9..3bb759a1f 100644 --- a/app/assets/main.html +++ b/app/assets/main.html @@ -28,11 +28,20 @@ <link rel="shortcut icon" href="/images/favicon.ico"> <link rel="stylesheet" href="/stylesheets/app.css"> + <!-- IE9 doesn't support defer attribute: https://github.com/h5bp/lazyweb-requests/issues/42 --> + <!--[if IE 9]> + <script src="/lib/ace/ace.js"></script> + <script src="/javascripts/box2d.js"></script> + <script src="/javascripts/vendor.js"></script> + <script src="/javascripts/aether.js"></script> + <script src="/javascripts/app.js"></script> + <![endif]--> + <![if (gt IE 9)|(!IE)]> <script src="/lib/ace/ace.js" defer></script> - <!--[if IE 9]><script src="/javascripts/box2d.js"></script><![endif]--> <script src="/javascripts/vendor.js" defer></script> <script src="/javascripts/aether.js" defer></script> <script src="/javascripts/app.js" defer></script> <!-- it's all Backbone! --> + <![endif]> <script> // Placeholder for iPad, which inspects the user object at the bottom of an injected page. diff --git a/app/lib/LevelBus.coffee b/app/lib/LevelBus.coffee index 750e5fbc1..adbf25c28 100644 --- a/app/lib/LevelBus.coffee +++ b/app/lib/LevelBus.coffee @@ -30,9 +30,9 @@ module.exports = class LevelBus extends Bus super(arguments...) @changedSessionProperties = {} if document.location.href.search('codecombat.com') isnt -1 - @saveSession = _.debounce(@reallySaveSession, 10000, {maxWait: 30000}) # Save us during HoC + @saveSession = _.debounce(@reallySaveSession, 4000, {maxWait: 10000}) # Save slower on production. else - @saveSession = _.debounce(@reallySaveSession, 1000, {maxWait: 5000}) # Not this fast during HoC + @saveSession = _.debounce(@reallySaveSession, 1000, {maxWait: 5000}) # Save quickly in development. @playerIsIdle = false init: -> diff --git a/app/models/CocoModel.coffee b/app/models/CocoModel.coffee index e6f649bc4..e9a687882 100644 --- a/app/models/CocoModel.coffee +++ b/app/models/CocoModel.coffee @@ -19,10 +19,10 @@ class CocoModel extends Backbone.Model @on 'error', @onError, @ @on 'add', @onLoaded, @ @saveBackup = _.debounce(@saveBackup, 500) - @usesVersions = @schema().properties.version? + @usesVersions = @schema()?.properties?.version? backupKey: -> - if @usesVersions then @id else @id + ':' + @attributes.__v # TODO: doesn't work because __v doesn't actually increment? + if @usesVersions then @id else @id + ':' + @attributes.__v # TODO: doesn't work because __v doesn't actually increment. #2061 setProjection: (project) -> return if project is @project diff --git a/app/models/LevelSession.coffee b/app/models/LevelSession.coffee index cc30de4b8..cf8f21a45 100644 --- a/app/models/LevelSession.coffee +++ b/app/models/LevelSession.coffee @@ -59,6 +59,7 @@ module.exports = class LevelSession extends CocoModel state.difficulty = (state.difficulty ? 0) + 1 delete state.lastUnsuccessfulSubmissionTime @set 'state', state + @save() timeUntilResubmit: -> state = @get('state') ? {} diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index cde4b7ecc..7f0e3465d 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -733,9 +733,6 @@ module.exports = class SpellView extends CocoView hashValue = aether.raw + aetherProblem.message return if hashValue of @savedProblems @savedProblems[hashValue] = true - if Math.random() > 0.01 - # Let's only save a tiny fraction of these during HoC to reduce writes. - return # Save new problem @userCodeProblem = new UserCodeProblem()