localforage: create custom KVStore instance, refactor Instance actions
This commit is contained in:
24
app/soapbox/storage/kv_store.js
Normal file
24
app/soapbox/storage/kv_store.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import localforage from 'localforage';
|
||||
|
||||
// localForage
|
||||
// https://localforage.github.io/localForage/#settings-api-config
|
||||
export const KVStore = localforage.createInstance({
|
||||
name: 'soapbox',
|
||||
description: 'Soapbox offline data store',
|
||||
driver: localforage.INDEXEDDB,
|
||||
storeName: 'keyvaluepairs',
|
||||
});
|
||||
|
||||
// localForage returns 'null' when a key isn't found.
|
||||
// In the Redux action flow, we want it to fail harder.
|
||||
KVStore.getItemOrError = key => {
|
||||
return KVStore.getItem(key).then(value => {
|
||||
if (value === null) {
|
||||
throw new Error(`KVStore: null value for key ${key}`);
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export default KVStore;
|
||||
Reference in New Issue
Block a user