Handle the three get cases
authorJessica Lord <jlord@github.com>
Thu, 9 Jun 2016 23:26:42 +0000 (16:26 -0700)
committerJessica Lord <jlord@github.com>
Thu, 9 Jun 2016 23:26:42 +0000 (16:26 -0700)
lib/renderer/extensions/storage.js

index 07080ee..b2e2149 100644 (file)
@@ -17,26 +17,27 @@ module.exports = {
   sync: {
     get (keys, callback) {
       const storage = getStorage()
-
-      if (keys === {} || keys === []) return {}
-      if (keys === null) return storage
-
-      if (typeof keys === 'string') keys = [keys]
+      if (keys == null) return storage
+
+      let defaults = {}
+      switch (typeof keys) {
+        case 'string':
+          keys = [keys]
+          break
+        case 'object':
+          if (!Array.isArray(keys)) {
+            defaults = keys
+            keys = Object.keys(keys)
+          }
+          break;
+      }
+      if (keys.length === 0 ) return {}
 
       let items = {}
-      // ['foo'] or ['foo', 'bar'] or [{foo: 'bar'}]
       keys.forEach(function (key) {
-        if (typeof key === 'string') {
-          items[key] = storage[key]
-        }
-        else {
-          const objKey = Object.keys(key)
-          if (!storage[objKey] || storage[objKey] === '') {
-            items[objKey] = key[objKey]
-          } else {
-            items[objKey] = storage[objKey]
-          }
-        }
+        var value = storage[key]
+        if (value == null) value = defaults[key]
+        items[key] = value
       })
 
       setTimeout(function () {