Browse Source

Add onLoad/onStore

pull/4223/head
Artur Arseniev 5 years ago
parent
commit
4d54922674
  1. 11
      src/storage_manager/config/config.js
  2. 5
      src/storage_manager/index.js

11
src/storage_manager/config/config.js

@ -32,6 +32,17 @@ export default {
// need to be done before save. Useful with remoteStorage to reduce remote calls
stepsBeforeSave: 1,
/**
* Callback triggered before the store call (can be asynchronous).
* This can be used to enrich the project data to store.
*/
onStore: data => data,
/**
* Callback triggered after the load call (can be asynchronous).
*/
onLoad: data => data,
// Default storage options
options: {
local: {

5
src/storage_manager/index.js

@ -270,6 +270,7 @@ export default () => {
async __exec(storage, opts, data) {
const ev = data ? 'store' : 'load';
const { onStore, onLoad } = this.getConfig();
let result;
this.onStart(ev, data);
@ -280,13 +281,15 @@ export default () => {
try {
if (data) {
const toStore = (opts.onStore && (await opts.onStore(data))) || data;
let toStore = (onStore && (await onStore(data))) || data;
toStore = (opts.onStore && (await opts.onStore(toStore))) || toStore;
await storage.store(toStore, opts);
result = data;
} else {
result = await storage.load(opts);
result = this.__clearKeys(result);
result = (opts.onLoad && (await opts.onLoad(result))) || result;
result = (onLoad && (await onLoad(result))) || result;
}
this.onAfter(ev, result);
this.onEnd(ev, result);

Loading…
Cancel
Save