From 4e8c1c059ea6b7c12cf2b7a4742b5614292471d6 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sat, 7 Apr 2018 14:06:01 +0200 Subject: [PATCH] Add `storage:store:before` event --- src/editor/index.js | 1 + src/storage_manager/index.js | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/editor/index.js b/src/editor/index.js index f5b71ecf8..c4ba3cf7e 100644 --- a/src/editor/index.js +++ b/src/editor/index.js @@ -41,6 +41,7 @@ * * `storage:start` - Before the storage request is started * * `storage:load` - Triggered when something was loaded from the storage, loaded object passed as an argumnet * * `storage:store` - Triggered when something is stored to the storage, stored object passed as an argumnet + * * `storage:store:before` - Before the store. The object to store is passed as an argumnet (which you can edit) * * `storage:end` - After the storage request is ended * * `storage:error` - On any error on storage request, passes the error as an argument * ## Canvas diff --git a/src/storage_manager/index.js b/src/storage_manager/index.js index 9f9b8efe2..c895597c7 100644 --- a/src/storage_manager/index.js +++ b/src/storage_manager/index.js @@ -11,6 +11,7 @@ module.exports = () => { LocalStorage = require('./model/LocalStorage'), RemoteStorage = require('./model/RemoteStorage'); + let em; var storages = {}; var defaultStorages = {}; @@ -42,6 +43,7 @@ module.exports = () => { */ init(config) { c = config || {}; + em = c.em; for (var name in defaults) { if (!(name in c)) c[name] = defaults[name]; @@ -171,12 +173,15 @@ module.exports = () => { * storageManager.store({item1: value1, item2: value2}); * */ store(data, clb) { - var st = this.get(this.getCurrent()); - var dataF = {}; + const st = this.get(this.getCurrent()); + const toStore = {}; + em && em.trigger('storage:store:before', data); - for (var key in data) dataF[c.id + key] = data[key]; + for (let key in data) { + toStore[c.id + key] = data[key]; + } - return st ? st.store(dataF, clb) : null; + return st ? st.store(toStore, clb) : null; }, /**