ducky/web

Paddy 2015-07-07 Parent:6b7037b4cbe7 Child:bc1478742a50

20:13d27b50d79e Browse Files

Remove local-storage wrapper, minor updates to Me model. No longer use our local-storage helper (remove it entirely), as we're no longer going to be a Chrome app. So let's just always rely on localStorage. Update our Me URL to use the nginx-fronted URL. Add an email property to our Me model, to keep track of the email we logged in with. This is mostly used for setting up our subscription, and should be deprecated in the future.

src/helpers/local-storage.js src/models/me.js

     1.1 --- a/src/helpers/local-storage.js	Tue Jul 07 21:21:28 2015 -0400
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,111 +0,0 @@
     1.4 -import log from 'andlog'
     1.5 -
     1.6 -const useChromeStorage = chrome && chrome.storage && chrome.storage.local
     1.7 -const hasLocalStorage = useChromeStorage || localStorage
     1.8 -
     1.9 -if (useChromeStorage) {
    1.10 -  log.info('Using chrome local storage')
    1.11 -} else if (hasLocalStorage) {
    1.12 -  log.info('Using HTML5 local storage')
    1.13 -} else {
    1.14 -  log.error('No acceptable local storage option found.')
    1.15 -}
    1.16 -
    1.17 -const get = (keys) => {
    1.18 -  const single = !(keys instanceof Array)
    1.19 -  if (single) {
    1.20 -    keys = [keys]
    1.21 -  }
    1.22 -  log.info('Retrieving', keys, 'from local storage')
    1.23 -  return new Promise((resolve, reject) => {
    1.24 -    if (useChromeStorage) {
    1.25 -      chrome.storage.local.get(keys, (results) => {
    1.26 -        if (runtime && runtime.lastError) {
    1.27 -          reject(runtime.lastError)
    1.28 -          log.error('Error retrieving', keys, 'from local storage:', runtime.lastError)
    1.29 -          return
    1.30 -        }
    1.31 -        if (single) {
    1.32 -          results = results[keys[0]]
    1.33 -        }
    1.34 -        log.info('Retrieved', results, 'from local storage when asking for', keys)
    1.35 -        resolve(results)
    1.36 -      })
    1.37 -    } else if (hasLocalStorage) {
    1.38 -      let results = {}
    1.39 -      keys.forEach((key) => {
    1.40 -        results[key] = localStorage.getItem(key)
    1.41 -      })
    1.42 -      if (single) {
    1.43 -        results = results[keys[0]]
    1.44 -      }
    1.45 -      log.info('Retrieved', results, 'from local storage when asking for', keys)
    1.46 -      resolve(results)
    1.47 -    } else {
    1.48 -      log.error('No valid local storage options')
    1.49 -      reject('No valid local storage options')
    1.50 -    }
    1.51 -  })
    1.52 -}
    1.53 -
    1.54 -const set = (key, value) => {
    1.55 -  log.info('Setting', key, 'to', value, 'in local storage')
    1.56 -    if (useChromeStorage) {
    1.57 -      chrome.storage.local.set(key, value, () => {
    1.58 -        if (runtime && runtime.lastError) {
    1.59 -          console.error('Error storing data in local storage:', runtime.lastError)
    1.60 -        }
    1.61 -      })
    1.62 -    } else if (hasLocalStorage) {
    1.63 -      localStorage.setItem(key, value)
    1.64 -    } else {
    1.65 -      console.error('No valid local storage options')
    1.66 -    }
    1.67 -    log.info('Set', key, 'to', value, 'in local storage')
    1.68 -}
    1.69 -
    1.70 -const remove = (keys) => {
    1.71 -  if(!(keys instanceof Array)) {
    1.72 -    keys = [keys]
    1.73 -  }
    1.74 -  log.info('Removing', keys, 'from local storage')
    1.75 -  if (useChromeStorage) {
    1.76 -    chrome.storage.local.remove(keys, () => {
    1.77 -      if (runtime && runtime.lastError) {
    1.78 -        console.error('Error removing data from local storage:', runtime.lastError)
    1.79 -      }
    1.80 -    })
    1.81 -  } else if (hasLocalStorage) {
    1.82 -    keys.forEach((key) => {
    1.83 -      localStorage.removeItem(key)
    1.84 -    })
    1.85 -  } else {
    1.86 -    console.error('No valid local storage options')
    1.87 -  }
    1.88 -  log.info('Removed', keys, 'from local storage')
    1.89 -}
    1.90 -
    1.91 -const clear = () => {
    1.92 -  log.info('Clearing local storage')
    1.93 -  if (useChromeStorage) {
    1.94 -    chrome.storage.local.clear(() => {
    1.95 -      if (runtime && runtime.lastError) {
    1.96 -        console.error('Error clearing data in local storage:', runtime.lastError)
    1.97 -      }
    1.98 -    })
    1.99 -  } else if (hasLocalStorage) {
   1.100 -    localStorage.clear()
   1.101 -  } else {
   1.102 -    console.error('No valid local storage options')
   1.103 -  }
   1.104 -  log.info('Cleared local storage')
   1.105 -}
   1.106 -
   1.107 -const storage = {
   1.108 -  get: get,
   1.109 -  set: set,
   1.110 -  remove: remove,
   1.111 -  clear: clear
   1.112 -}
   1.113 -
   1.114 -export default storage
     2.1 --- a/src/models/me.js	Tue Jul 07 21:21:28 2015 -0400
     2.2 +++ b/src/models/me.js	Tue Jul 07 21:25:49 2015 -0400
     2.3 @@ -4,11 +4,10 @@
     2.4  import config from '../config'
     2.5  import isObject from 'lodash.isobject'
     2.6  import jwtDecode from 'jwt-decode'
     2.7 -import localStore from '../helpers/local-storage'
     2.8  import debounce from 'lodash.debounce'
     2.9  
    2.10  export default Model.extend({
    2.11 -  url: config.urlBase + '/token',
    2.12 +  url: config.urlBase + '/auth/token',
    2.13    ajaxConfig: {
    2.14      headers: {
    2.15        'Content-Type': 'application/x-www-form-urlencoded',
    2.16 @@ -22,6 +21,7 @@
    2.17      expires_in: 'int',
    2.18      token_created: 'date',
    2.19      profileID: 'string',
    2.20 +    email: 'string',
    2.21    },
    2.22  
    2.23    profile() {
    2.24 @@ -60,6 +60,7 @@
    2.25          'username': email,
    2.26          'password': password,
    2.27          'grant_type': 'password',
    2.28 +        'scope': 'subscriptions',
    2.29        }),
    2.30      }
    2.31      let moc = this
    2.32 @@ -75,6 +76,7 @@
    2.33        }
    2.34        const token = jwtDecode(moc.access_token)
    2.35        moc.profileID = token.sub
    2.36 +      moc.email = email
    2.37        moc.trigger('sync', moc, resp, options)
    2.38      }
    2.39      options.error = function(resp) {
    2.40 @@ -85,24 +87,21 @@
    2.41  
    2.42    writeToCache () {
    2.43      const data = JSON.stringify(this)
    2.44 -    localStore.set('me', data)
    2.45 +    localStorage.setItem('me', data)
    2.46    },
    2.47  
    2.48    load () {
    2.49      let moc = this
    2.50 -    localStore.get('me').catch((err) => {
    2.51 -      console.error(err)
    2.52 -    }).then((resp) => {
    2.53 -      if (resp) {
    2.54 -        const loaded = this.parse(JSON.parse(resp))
    2.55 -        moc.set(loaded, {silent: true})
    2.56 -      }
    2.57 -    })
    2.58 +    const resp = localStorage.getItem('me')
    2.59 +    if (resp) {
    2.60 +      const loaded = this.parse(JSON.parse(resp))
    2.61 +      moc.set(loaded, {silent: true})
    2.62 +    }
    2.63      return this
    2.64    },
    2.65  
    2.66    logout () {
    2.67 -    localStore.remove('me')
    2.68 +    localStorage.removeItem('me')
    2.69    },
    2.70  
    2.71  })