ducky/web

Paddy 2015-07-07 Parent:275a83e4c02e

17:313780205e39 Go to Latest

ducky/web/src/helpers/local-storage.js

Use our "production" config values. Use config values for our hosted test instance of the services. These aren't actually production values, but they're at least _live_ values.

History
paddy@14 1 import log from 'andlog'
paddy@14 2
paddy@14 3 const useChromeStorage = chrome && chrome.storage && chrome.storage.local
paddy@14 4 const hasLocalStorage = useChromeStorage || localStorage
paddy@14 5
paddy@14 6 if (useChromeStorage) {
paddy@14 7 log.info('Using chrome local storage')
paddy@14 8 } else if (hasLocalStorage) {
paddy@14 9 log.info('Using HTML5 local storage')
paddy@14 10 } else {
paddy@14 11 log.error('No acceptable local storage option found.')
paddy@14 12 }
paddy@14 13
paddy@14 14 const get = (keys) => {
paddy@14 15 const single = !(keys instanceof Array)
paddy@14 16 if (single) {
paddy@14 17 keys = [keys]
paddy@14 18 }
paddy@14 19 log.info('Retrieving', keys, 'from local storage')
paddy@14 20 return new Promise((resolve, reject) => {
paddy@14 21 if (useChromeStorage) {
paddy@14 22 chrome.storage.local.get(keys, (results) => {
paddy@14 23 if (runtime && runtime.lastError) {
paddy@14 24 reject(runtime.lastError)
paddy@14 25 log.error('Error retrieving', keys, 'from local storage:', runtime.lastError)
paddy@14 26 return
paddy@14 27 }
paddy@14 28 if (single) {
paddy@14 29 results = results[keys[0]]
paddy@14 30 }
paddy@14 31 log.info('Retrieved', results, 'from local storage when asking for', keys)
paddy@14 32 resolve(results)
paddy@14 33 })
paddy@14 34 } else if (hasLocalStorage) {
paddy@14 35 let results = {}
paddy@14 36 keys.forEach((key) => {
paddy@14 37 results[key] = localStorage.getItem(key)
paddy@14 38 })
paddy@14 39 if (single) {
paddy@14 40 results = results[keys[0]]
paddy@14 41 }
paddy@14 42 log.info('Retrieved', results, 'from local storage when asking for', keys)
paddy@14 43 resolve(results)
paddy@14 44 } else {
paddy@14 45 log.error('No valid local storage options')
paddy@14 46 reject('No valid local storage options')
paddy@14 47 }
paddy@14 48 })
paddy@14 49 }
paddy@14 50
paddy@14 51 const set = (key, value) => {
paddy@14 52 log.info('Setting', key, 'to', value, 'in local storage')
paddy@14 53 if (useChromeStorage) {
paddy@14 54 chrome.storage.local.set(key, value, () => {
paddy@14 55 if (runtime && runtime.lastError) {
paddy@14 56 console.error('Error storing data in local storage:', runtime.lastError)
paddy@14 57 }
paddy@14 58 })
paddy@14 59 } else if (hasLocalStorage) {
paddy@14 60 localStorage.setItem(key, value)
paddy@14 61 } else {
paddy@14 62 console.error('No valid local storage options')
paddy@14 63 }
paddy@14 64 log.info('Set', key, 'to', value, 'in local storage')
paddy@14 65 }
paddy@14 66
paddy@14 67 const remove = (keys) => {
paddy@14 68 if(!(keys instanceof Array)) {
paddy@14 69 keys = [keys]
paddy@14 70 }
paddy@14 71 log.info('Removing', keys, 'from local storage')
paddy@14 72 if (useChromeStorage) {
paddy@14 73 chrome.storage.local.remove(keys, () => {
paddy@14 74 if (runtime && runtime.lastError) {
paddy@14 75 console.error('Error removing data from local storage:', runtime.lastError)
paddy@14 76 }
paddy@14 77 })
paddy@14 78 } else if (hasLocalStorage) {
paddy@14 79 keys.forEach((key) => {
paddy@14 80 localStorage.removeItem(key)
paddy@14 81 })
paddy@14 82 } else {
paddy@14 83 console.error('No valid local storage options')
paddy@14 84 }
paddy@14 85 log.info('Removed', keys, 'from local storage')
paddy@14 86 }
paddy@14 87
paddy@14 88 const clear = () => {
paddy@14 89 log.info('Clearing local storage')
paddy@14 90 if (useChromeStorage) {
paddy@14 91 chrome.storage.local.clear(() => {
paddy@14 92 if (runtime && runtime.lastError) {
paddy@14 93 console.error('Error clearing data in local storage:', runtime.lastError)
paddy@14 94 }
paddy@14 95 })
paddy@14 96 } else if (hasLocalStorage) {
paddy@14 97 localStorage.clear()
paddy@14 98 } else {
paddy@14 99 console.error('No valid local storage options')
paddy@14 100 }
paddy@14 101 log.info('Cleared local storage')
paddy@14 102 }
paddy@14 103
paddy@14 104 const storage = {
paddy@14 105 get: get,
paddy@14 106 set: set,
paddy@14 107 remove: remove,
paddy@14 108 clear: clear
paddy@14 109 }
paddy@14 110
paddy@14 111 export default storage