Browse Source

Improve `storage:error` event and add 2 other events

Other events are `storage:error:load` and `storage:error:store`
pull/1042/merge
Artur Arseniev 8 years ago
parent
commit
eb404769ee
  1. 2
      src/editor/index.js
  2. 59
      src/storage_manager/index.js

2
src/editor/index.js

@ -48,6 +48,8 @@
* * `storage:end:store` - After the store request
* * `storage:end:load` - After the load request
* * `storage:error` - On any error on storage request, passes the error as an argument
* * `storage:error:store` - Error on store request, passes the error as an argument
* * `storage:error:load` - Error on load request, passes the error as an argument
* ## Canvas
* * `canvas:dragenter` - When something is dragged inside the canvas, `DataTransfer` instance passed as an argument
* * `canvas:dragover` - When something is dragging on canvas, `DataTransfer` instance passed as an argument

59
src/storage_manager/index.js

@ -16,6 +16,7 @@ module.exports = () => {
var defaultStorages = {};
const eventStart = 'storage:start';
const eventEnd = 'storage:end';
const eventError = 'storage:error';
return {
/**
@ -111,15 +112,17 @@ module.exports = () => {
* @return {this}
* @example
* storageManager.add('local2', {
* load: function(keys, clb) {
* load: function(keys, clb, clbErr) {
* var res = {};
* for (var i = 0, len = keys.length; i < len; i++){
* var v = localStorage.getItem(keys[i]);
* if(v) res[keys[i]] = v;
* }
* clb(res); // might be called inside some async method
* // In case of errors...
* // clbErr('Went something wrong');
* },
* store: function(data, clb) {
* store: function(data, clb, clbErr) {
* for(var key in data)
* localStorage.setItem(key, data[key]);
* clb(); // might be called inside some async method
@ -184,10 +187,16 @@ module.exports = () => {
}
return st
? st.store(toStore, res => {
clb && clb(res);
this.onEnd('store', res);
})
? st.store(
toStore,
res => {
clb && clb(res);
this.onEnd('store', res);
},
err => {
this.onError('store', err);
}
)
: null;
},
@ -216,17 +225,23 @@ module.exports = () => {
}
if (st) {
st.load(keysF, res => {
// Restore keys name
var reg = new RegExp('^' + c.id + '');
for (var itemKey in res) {
var itemKeyR = itemKey.replace(reg, '');
result[itemKeyR] = res[itemKey];
}
st.load(
keysF,
res => {
// Restore keys name
var reg = new RegExp('^' + c.id + '');
for (var itemKey in res) {
var itemKeyR = itemKey.replace(reg, '');
result[itemKeyR] = res[itemKey];
}
clb && clb(result);
this.onEnd('load', result);
});
clb && clb(result);
this.onEnd('load', result);
},
err => {
this.onError('load', err);
}
);
} else {
clb && clb(result);
}
@ -272,6 +287,18 @@ module.exports = () => {
}
},
/**
* On error callback
* @private
*/
onError(ctx, data) {
if (em) {
em.trigger(eventError, data);
ctx && em.trigger(`${eventError}:${ctx}`, data);
this.onEnd(ctx, data);
}
},
/**
* Check if autoload is possible
* @return {Boolean}

Loading…
Cancel
Save