Skip to content

Instantly share code, notes, and snippets.

@viniciusdacal
Created December 11, 2017 16:57
Show Gist options
  • Save viniciusdacal/c9a4caaa86fa6bbf4699f63561a0211a to your computer and use it in GitHub Desktop.
Save viniciusdacal/c9a4caaa86fa6bbf4699f63561a0211a to your computer and use it in GitHub Desktop.
// Helper to swap between localStorage and cookie storage due to stupid Safari
import Cookie from 'js-cookie';
const storage = {};
// Safari in incognito has local storage, but size 0
// This system falls back to cookies in that situation
try {
if (!window.localStorage) {
throw Error('no local storage');
}
localStorage.setItem('test', 'test');
if (localStorage.getItem('test') === 'test') {
localStorage.removeItem('test');
}
// Setup simple local storage wrapper
storage.set = (key, value) =>
localStorage.setItem(key, JSON.stringify(value));
storage.get = (key) => {
const item = localStorage.getItem(key);
try {
return JSON.parse(item);
} catch (e) {
return null;
}
};
storage.remove = key => localStorage.removeItem(key);
} catch (e) {
storage.set = Cookie.set;
storage.get = Cookie.getJSON;
storage.remove = Cookie.remove;
}
export default storage;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment