diff options
Diffstat (limited to 'pages')
| -rw-r--r-- | pages/options.coffee | 26 | 
1 files changed, 17 insertions, 9 deletions
| diff --git a/pages/options.coffee b/pages/options.coffee index 091c2fd0..86b6122d 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -1,7 +1,6 @@  $ = (id) -> document.getElementById id  bgExclusions = chrome.extension.getBackgroundPage().Exclusions -restoreSettingsVersion = null  # We have to use Settings from the background page here (not Settings, directly) to avoid a race condition for  # the page popup.  Specifically, we must ensure that the settings have been updated on the background page @@ -40,17 +39,14 @@ class Option      bgSettings.clear @field      @fetch() +  @onSaveCallbacks: [] +  @onSave: (callback) -> +    @onSaveCallbacks.push callback +    # Static method.    @saveOptions: ->      Option.all.map (option) -> option.save() -    # If we're restoring a backup, then restore the backed up settingsVersion. -    if restoreSettingsVersion? -      bgSettings.set "settingsVersion", restoreSettingsVersion -      restoreSettingsVersion = null -    # Reset the restore-backup input. -    $("chooseFile").value = "" -    # We need to apply migrations in case we are restoring an old backup. -    bgSettings.applyMigrations() +    callback() for callback in @onSaveCallbacks    # Abstract method; only implemented in sub-classes.    # Populate the option's DOM element (@element) with the setting's current value. @@ -337,6 +333,8 @@ document.addEventListener "DOMContentLoaded", ->  #  # Backup and restore. "?" is for the tests."  DomUtils?.documentReady -> +  restoreSettingsVersion = null +    populateBackupLinkUrl = ->      backup = settingsVersion: bgSettings.get "settingsVersion"      for option in Option.all @@ -368,6 +366,16 @@ DomUtils?.documentReady ->              option.populateElement backup[option.field]              option.onUpdated() +  Option.onSave -> +    # If we're restoring a backup, then restore the backed up settingsVersion. +    if restoreSettingsVersion? +      bgSettings.set "settingsVersion", restoreSettingsVersion +      restoreSettingsVersion = null +    # Reset the restore-backup input. +    $("chooseFile").value = "" +    # We need to apply migrations in case we are restoring an old backup. +    bgSettings.applyMigrations() +  # Exported for tests.  root = exports ? window  extend root, {Options, isVimiumOptionsPage: true} | 
