From ded92b94c2a0c2e5bcdf42bb29c5b7e83fb2951b Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Tue, 2 Apr 2013 13:34:34 +0200 Subject: [PATCH] Allow $.set to save multiple items at once. Fix importing watched threads from v2. --- lib/$.coffee | 48 +++++++++++++++++++++++++++++++-------------- src/features.coffee | 10 +++++----- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/lib/$.coffee b/lib/$.coffee index 8bbf177dc..1e171fdfa 100644 --- a/lib/$.coffee +++ b/lib/$.coffee @@ -227,7 +227,11 @@ $.extend $, items = $.item key, val chrome.storage.sync.get items, cb set: (key, val) -> - chrome.storage.sync.set $.item key, val + items = if arguments.length is 2 + $.item key, val + else + key + chrome.storage.sync.set items <% } else if (type === 'userjs') { %> do -> # http://www.opera.com/docs/userjs/specs/#scriptstorage @@ -257,13 +261,20 @@ do -> if val = scriptStorage[g.NAMESPACE + key] items[key] = JSON.parse val cb items - $.set = (key, val) -> - key = g.NAMESPACE + key - val = JSON.stringify val - if key of $.syncing - # for `storage` events - localStorage.setItem key, val - scriptStorage[key] = val + $.set = do -> + set = (key, val) -> + key = g.NAMESPACE + key + val = JSON.stringify val + if key of $.syncing + # for `storage` events + localStorage.setItem key, val + scriptStorage[key] = val + (key, val) -> + if arguments.length is 1 + for key, val of key + set key, val + else + set key, val <% } else { %> # http://wiki.greasespot.net/Main_Page delete: (key) -> @@ -285,11 +296,18 @@ do -> if val = GM_getValue g.NAMESPACE + key items[key] = JSON.parse val cb items - set: (key, val) -> - key = g.NAMESPACE + key - val = JSON.stringify val - if key of $.syncing - # for `storage` events - localStorage.setItem key, val - GM_setValue key, val + set: do -> + set = (key, val) -> + key = g.NAMESPACE + key + val = JSON.stringify val + if key of $.syncing + # for `storage` events + localStorage.setItem key, val + GM_setValue key, val + (key, val) -> + if arguments.length is 1 + for key, val of key + set key, val + else + set key, val <% } %> diff --git a/src/features.coffee b/src/features.coffee index 19522f86f..503bb927b 100644 --- a/src/features.coffee +++ b/src/features.coffee @@ -226,8 +226,9 @@ Settings = new Notification 'info', el, 60 else $.on d, '4chanXInitFinished', Settings.open - $.set 'lastupdate', Date.now() - $.set 'previousversion', g.VERSION + $.set + lastupdate: Date.now() + previousversion: g.VERSION Settings.addSection 'Main', Settings.main Settings.addSection 'Filter', Settings.filter @@ -477,9 +478,8 @@ Settings = continue unless key of data.Conf data.Conf[key] = data.Conf[key].replace(/ctrl|alt|meta/g, (s) -> "#{s[0].toUpperCase()}#{s[1..]}").replace /(^|.+\+)[A-Z]$/g, (s) -> "Shift+#{s[0...-1]}#{s[-1..].toLowerCase()}" - for key, val of data.Conf - $.set key, val - $.set 'WatchedThreads', data.WatchedThreads + data.Conf.WatchedThreads = data.WatchedThreads + $.set data.Conf convertSettings: (data, map) -> for prevKey, newKey of map data.Conf[newKey] = data.Conf[prevKey] if newKey