store.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. export class Store {
  2. get(key) {
  3. return window.localStorage[key];
  4. }
  5. set(key, value) {
  6. window.localStorage[key] = value;
  7. }
  8. getBool(key, def) {
  9. if (def !== void 0 && !this.exists(key)) {
  10. return def;
  11. }
  12. return window.localStorage[key] === 'true';
  13. }
  14. getObject(key: string, def?: any) {
  15. let ret = def;
  16. if (this.exists(key)) {
  17. const json = window.localStorage[key];
  18. try {
  19. ret = JSON.parse(json);
  20. } catch (error) {
  21. console.error(`Error parsing store object: ${key}. Returning default: ${def}. [${error}]`);
  22. }
  23. }
  24. return ret;
  25. }
  26. // Returns true when successfully stored
  27. setObject(key: string, value: any): boolean {
  28. let json;
  29. try {
  30. json = JSON.stringify(value);
  31. } catch (error) {
  32. console.error(`Could not stringify object: ${key}. [${error}]`);
  33. return false;
  34. }
  35. try {
  36. this.set(key, json);
  37. } catch (error) {
  38. // Likely hitting storage quota
  39. console.error(`Could not save item in localStorage: ${key}. [${error}]`);
  40. return false;
  41. }
  42. return true;
  43. }
  44. exists(key) {
  45. return window.localStorage[key] !== void 0;
  46. }
  47. delete(key) {
  48. window.localStorage.removeItem(key);
  49. }
  50. }
  51. const store = new Store();
  52. export default store;