/**
 * Updates a local storage key. If it doesn't exist, it defaults to an empty
 * object.
 *
 * @example
 *     update('dismissed', (data) => {
 *       data.lol = true
 *       return data
 *     })
 */

export function update (key, fn) {
  if (!window.localStorage) return
  let data = JSON.parse(window.localStorage[key] || '{}')
  data = fn(data)
  window.localStorage[key] = JSON.stringify(data)
}

/**
 * Fetches a local storage key.
 *
 * @example
 *     const data = fetch('dismissed')
 */

export function fetch (key) {
  if (!window.localStorage) return
  return JSON.parse(window.localStorage[key] || '{}')
}
