Polishing up localStorage helpers
This commit is contained in:
@ -22,6 +22,12 @@ var storage = (function() {
|
||||
} catch (exception) {}
|
||||
}());
|
||||
|
||||
/**
|
||||
* Get a storage value
|
||||
*
|
||||
* @param key = string
|
||||
* @param default_value = mixed (optional, if localStorage key doesn't exist, return this)
|
||||
**/
|
||||
export let getStorage = function(key, default_value = {}){
|
||||
if (storage){
|
||||
var value = storage.getItem(key);
|
||||
@ -37,22 +43,34 @@ export let getStorage = function(key, default_value = {}){
|
||||
}
|
||||
}
|
||||
|
||||
export let setStorage = function(key, value){
|
||||
/**
|
||||
* Set a storage value
|
||||
*
|
||||
* @param key = string
|
||||
* @param value = object
|
||||
* @param replace = boolean (optional, completely replace our local value rather than merging it)
|
||||
**/
|
||||
export let setStorage = function(key, value, replace = false){
|
||||
if (storage){
|
||||
var stored_value = storage.getItem(key);
|
||||
if (stored_value){
|
||||
|
||||
// We have nothing to merge with, or we want to completely replace previous value
|
||||
if (!stored_value || replace){
|
||||
var new_value = value;
|
||||
|
||||
// Merge new value with existing
|
||||
} else {
|
||||
var new_value = Object.assign(
|
||||
{},
|
||||
JSON.parse(stored_value),
|
||||
value
|
||||
);
|
||||
} else {
|
||||
var new_value = value;
|
||||
}
|
||||
storage.setItem(key, JSON.stringify(new_value));
|
||||
return;
|
||||
} else {
|
||||
console.warn("localStorage not available. '"+key+"'' will not perist when you close your browser.");
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -153,17 +153,21 @@ const localstorageMiddleware = (function(){
|
||||
break
|
||||
|
||||
case 'SUPPRESS_BROADCAST':
|
||||
var ui = JSON.parse(localStorage.getItem('ui'))
|
||||
if (!ui) ui = {}
|
||||
var ui = helpers.getStorage('ui');
|
||||
if (ui.suppressed_broadcasts !== undefined){
|
||||
var suppressed_broadcasts = ui.suppressed_broadcasts;
|
||||
} else {
|
||||
var suppressed_broadcasts = [];
|
||||
}
|
||||
|
||||
var suppressed_broadcasts = (typeof(ui.suppressed_broadcasts) !== 'undefined' ? ui.suppressed_broadcasts : [])
|
||||
suppressed_broadcasts.push(action.key)
|
||||
suppressed_broadcasts.push(action.key);
|
||||
|
||||
Object.assign(
|
||||
ui,
|
||||
{ suppressed_broadcasts: suppressed_broadcasts }
|
||||
helpers.setStorage(
|
||||
'ui',
|
||||
{
|
||||
suppressed_broadcasts: suppressed_broadcasts
|
||||
}
|
||||
);
|
||||
localStorage.setItem('ui', JSON.stringify(ui))
|
||||
break
|
||||
|
||||
case 'LASTFM_AUTHORIZATION_GRANTED':
|
||||
|
||||
Reference in New Issue
Block a user