|
1 | 1 | var AlgoliaSearchHelper = require('algoliasearch-helper').AlgoliaSearchHelper;
|
| 2 | +var majorVersionNumber = require('../lib/version.js').split('.')[0]; |
2 | 3 |
|
3 | 4 | var isEqual = require('lodash/lang/isEqual');
|
4 | 5 | var merge = require('lodash/object/merge');
|
@@ -97,30 +98,34 @@ class URLSync {
|
97 | 98 | return config;
|
98 | 99 | }
|
99 | 100 |
|
| 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 | + |
100 | 114 | 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)); |
114 | 116 | }
|
115 | 117 |
|
116 | 118 | render({helper}) {
|
117 | 119 | var helperState = helper.getState(this.trackedParameters);
|
118 | 120 | var currentQueryString = this.urlUtils.readUrl();
|
119 |
| - var foreignConfig = AlgoliaSearchHelper.getForeignConfigurationInQueryString(currentQueryString); |
120 | 121 | var urlState = AlgoliaSearchHelper.getConfigurationFromQueryString(currentQueryString);
|
121 | 122 |
|
122 | 123 | if (isEqual(helperState, urlState)) return;
|
123 | 124 |
|
| 125 | + // Add instantsearch version to reconciliate old url with newer versions |
| 126 | + var foreignConfig = AlgoliaSearchHelper.getForeignConfigurationInQueryString(currentQueryString); |
| 127 | + foreignConfig.is_v = majorVersionNumber; |
| 128 | + |
124 | 129 | var qs = helper.getStateAsQueryString({filters: this.trackedParameters, moreAttributes: foreignConfig});
|
125 | 130 | if (this.timer() < this.threshold) {
|
126 | 131 | this.urlUtils.replaceState(qs);
|
|
0 commit comments