store.js
1 import { getCurrentAccountNS } from './store-utils'; 2 3 const local = { 4 get: (key) => { 5 try { 6 return localStorage.getItem(key); 7 } catch (e) { 8 console.warn(e); 9 return null; 10 } 11 }, 12 getJSON: (key) => { 13 try { 14 return JSON.parse(local.get(key)); 15 } catch (e) { 16 console.warn(e); 17 return null; 18 } 19 }, 20 set: (key, value) => { 21 try { 22 return localStorage.setItem(key, value); 23 } catch (e) { 24 console.warn(e); 25 return null; 26 } 27 }, 28 setJSON: (key, value) => { 29 try { 30 return local.set(key, JSON.stringify(value)); 31 } catch (e) { 32 console.warn(e); 33 return null; 34 } 35 }, 36 del: (key) => { 37 try { 38 return localStorage.removeItem(key); 39 } catch (e) { 40 console.warn(e); 41 return null; 42 } 43 }, 44 }; 45 46 const session = { 47 get: (key) => { 48 try { 49 return sessionStorage.getItem(key); 50 } catch (e) { 51 console.warn(e); 52 return null; 53 } 54 }, 55 getJSON: (key) => { 56 try { 57 return JSON.parse(session.get(key)); 58 } catch (e) { 59 console.warn(e); 60 return null; 61 } 62 }, 63 set: (key, value) => { 64 try { 65 return sessionStorage.setItem(key, value); 66 } catch (e) { 67 console.warn(e); 68 return null; 69 } 70 }, 71 setJSON: (key, value) => { 72 try { 73 return session.set(key, JSON.stringify(value)); 74 } catch (e) { 75 console.warn(e); 76 return null; 77 } 78 }, 79 del: (key) => { 80 try { 81 return sessionStorage.removeItem(key); 82 } catch (e) { 83 console.warn(e); 84 return null; 85 } 86 }, 87 }; 88 89 // Store with account namespace (id@domain.tld) <- uses id, not username 90 const account = { 91 get: (key) => { 92 try { 93 return local.getJSON(key)[getCurrentAccountNS()]; 94 } catch (e) { 95 console.warn(e); 96 return null; 97 } 98 }, 99 set: (key, value) => { 100 try { 101 const data = local.getJSON(key) || {}; 102 data[getCurrentAccountNS()] = value; 103 return local.setJSON(key, data); 104 } catch (e) { 105 console.warn(e); 106 return null; 107 } 108 }, 109 del: (key) => { 110 try { 111 const data = local.getJSON(key) || {}; 112 delete data[getCurrentAccountNS()]; 113 return local.setJSON(key, data); 114 } catch (e) { 115 console.warn(e); 116 return null; 117 } 118 }, 119 }; 120 121 export default { local, session, account };