commit 211da689ee420c3077a270c168e31b887d236ebf
parent f28d3f9538135291ecd82f3a10da7eb9e56c40cb
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Mon, 5 Mar 2018 00:26:10 +0300
[hashState] changed processing of steate chage event
Diffstat:
2 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/src/lib/leaflet.hashState/hashState.js b/src/lib/leaflet.hashState/hashState.js
@@ -81,11 +81,16 @@ const hashState = {
}
}
}
+ this._ignoreChanges = true;
location.hash = stateItems.join('&');
+ this._ignoreChanges = false;
},
onHashChanged: function() {
+ if (this._ignoreChanges) {
+ return;
+ }
const newState = this._parseHash();
const changedKeys = {};
for (let key of Object.keys(newState)) {
diff --git a/src/lib/leaflet.hashState/leaflet.hashState.js b/src/lib/leaflet.hashState/leaflet.hashState.js
@@ -1,5 +1,5 @@
import L from 'leaflet';
-import hashState from './hashState';
+import {hashState} from './hashState';
import logging from 'lib/logging';
L.Mixin.HashState = {
@@ -20,33 +20,24 @@ L.Mixin.HashState = {
// initialize control state from hash
const state = hashState.getState(key) || defaultInitialState;
- this._ignoreStateChange = true;
- if (!this.unserializeState(state) && !this.unserializeState(defaultInitialState)) { // state from hash is invalid, update hash from default state
- hashState.updateState(key, this.serializeState());
+ if (!state || !this.unserializeState(state)) {
+ this.unserializeState(defaultInitialState)
}
hashState.updateState(this._hashStateKey, this.serializeState());
- this._ignoreStateChange = false;
-
return this;
},
_onControlStateChanged: function() {
- if (this._ignoreStateChange) {
- return;
- }
const state = this.serializeState();
hashState.updateState(this._hashStateKey, state);
},
_onExternalStateChanged: function(state) {
- this._ignoreStateChange = true;
if (!this.unserializeState(state)) { // state from hash is invalid, update hash from component state
logging.captureMessageWithUrl(`Invalid state in hash string (key "${this._hashStateKey}")`);
hashState.updateState(this._hashStateKey, this.serializeState());
}
- this._ignoreStateChange = false;
}
-
// TODO: disableHashState
-};
-\ No newline at end of file
+};