Skip to content

Commit 9f597a0

Browse files
committed
feat(url-sync): Add is_v version to url
Fixes #70
1 parent c057e94 commit 9f597a0

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

widgets/url-sync/index.js renamed to widgets/url-sync.js

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var AlgoliaSearchHelper = require('algoliasearch-helper').AlgoliaSearchHelper;
2+
var majorVersionNumber = require('../lib/version.js').split('.')[0];
23

34
var isEqual = require('lodash/lang/isEqual');
45
var merge = require('lodash/object/merge');
@@ -97,30 +98,34 @@ class URLSync {
9798
return config;
9899
}
99100

101+
onPopState(helper) {
102+
var qs = this.urlUtils.readUrl();
103+
var partialState = AlgoliaSearchHelper.getConfigurationFromQueryString(qs);
104+
var fullState = merge({}, this.originalConfig, partialState);
105+
// compare with helper.state
106+
var partialHelperState = helper.getState(this.trackedParameters);
107+
var fullHelperState = merge({}, this.originalConfig, partialHelperState);
108+
109+
if (isEqual(fullHelperState, fullState)) return;
110+
111+
helper.setState(fullState).search();
112+
}
113+
100114
init(state, helper) {
101-
var self = this;
102-
this.urlUtils.onpopstate(function() {
103-
var qs = self.urlUtils.readUrl();
104-
var partialState = AlgoliaSearchHelper.getConfigurationFromQueryString(qs);
105-
var fullState = merge({}, self.originalConfig, partialState);
106-
// compare with helper.state
107-
var partialHelperState = helper.getState(self.trackedParameters);
108-
var fullHelperState = merge({}, self.originalConfig, partialHelperState);
109-
110-
if (isEqual(fullHelperState, fullState)) return;
111-
112-
helper.setState(fullState).search();
113-
});
115+
this.urlUtils.onpopstate(this.onPopState.bind(this, helper));
114116
}
115117

116118
render({helper}) {
117119
var helperState = helper.getState(this.trackedParameters);
118120
var currentQueryString = this.urlUtils.readUrl();
119-
var foreignConfig = AlgoliaSearchHelper.getForeignConfigurationInQueryString(currentQueryString);
120121
var urlState = AlgoliaSearchHelper.getConfigurationFromQueryString(currentQueryString);
121122

122123
if (isEqual(helperState, urlState)) return;
123124

125+
// Add instantsearch version to reconciliate old url with newer versions
126+
var foreignConfig = AlgoliaSearchHelper.getForeignConfigurationInQueryString(currentQueryString);
127+
foreignConfig.is_v = majorVersionNumber;
128+
124129
var qs = helper.getStateAsQueryString({filters: this.trackedParameters, moreAttributes: foreignConfig});
125130
if (this.timer() < this.threshold) {
126131
this.urlUtils.replaceState(qs);

0 commit comments

Comments
 (0)