diff options
| author | Stephen Blott | 2014-04-18 23:09:39 +0100 |
|---|---|---|
| committer | Stephen Blott | 2014-04-18 23:09:39 +0100 |
| commit | 75234c78cf13be08608ccd2b6bcecf2757b199ff (patch) | |
| tree | 45e2c4fa5b54ba251e8576b5eb5594717e6ef4c9 /background_scripts/settings.coffee | |
| parent | 3aa47a198f2424ba91bb7a8ac07d6b2c53da9698 (diff) | |
| download | vimium-75234c78cf13be08608ccd2b6bcecf2757b199ff.tar.bz2 | |
Code review of Sync().
Diffstat (limited to 'background_scripts/settings.coffee')
| -rw-r--r-- | background_scripts/settings.coffee | 37 |
1 files changed, 13 insertions, 24 deletions
diff --git a/background_scripts/settings.coffee b/background_scripts/settings.coffee index 64fce308..063287db 100644 --- a/background_scripts/settings.coffee +++ b/background_scripts/settings.coffee @@ -7,47 +7,36 @@ root.Settings = Settings = get: (key) -> if (key of localStorage) then JSON.parse(localStorage[key]) else @defaults[key] - # The doNotSync argument suppresses calls to chrome.storage.sync.* while running unit tests set: (key, value, doNotSync) -> # don't store the value if it is equal to the default, so we can change the defaults in the future - # warning: this test is always false for settings with numeric default values (such as scrollStepSize) - if ( value == @defaults[key] ) - return @clear(key,doNotSync) - # don't update the key/value if it's unchanged; thereby suppressing unnecessary calls to chrome.storage - valueJSON = JSON.stringify value - if localStorage[key] == valueJSON - return localStorage[key] - # we have a new value: so update chrome.storage and localStorage - root.Sync.set key, valueJSON if root?.Sync?.set - localStorage[key] = valueJSON + if (value == @defaults[key]) + @clear(key) + else + jsonified = JSON.stringify value + localStorage[key] = jsonified + root.Sync.set key, jsonified - # The doNotSync argument suppresses calls to chrome.storage.sync.* while running unit tests - clear: (key, doNotSync) -> + clear: (key) -> if @has key - root.Sync.clear key if root?.Sync?.clear delete localStorage[key] + root.Sync.clear key has: (key) -> key of localStorage - # the postUpdateHooks handler below is called each time an option changes: - # either from options/options.coffee (when the options page is saved) - # or from background_scripts/sync.coffee (when an update propagates from chrome.storage) - # - # NOTE: - # this has been refactored and renamed from options.coffee(postSaveHooks): - # - refactored because it is now also called from sync.coffee - # - renamed because it is no longer associated only with "Save" operations + # postUpdateHooks are called each time an option changes: + # either from options/options.coffee (when the options page is saved) + # or from background_scripts/sync.coffee (when an update propagates from chrome.storage) # postUpdateHooks: keyMappings: (value) -> root.Commands.clearKeyMappingsAndSetDefaults() root.Commands.parseCustomKeyMappings value root.refreshCompletionKeysAfterMappingSave() - + # postUpdateHooks convenience wrapper doPostUpdateHook: (key, value) -> if @postUpdateHooks[key] - @postUpdateHooks[key] value + @postUpdateHooks[key] value # options/options.(coffee|html) only handle booleans and strings; therefore |
