Skip to content

Commit 80596b4

Browse files
committed
AMP-0 Fix cookie migration paths
1 parent 826ce88 commit 80596b4

11 files changed

+59
-14
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
## Unreleased
22

3-
### 4.1.0 (January 18, 2017)
3+
### 4.1.1 (March 22, 2018)
4+
5+
* Fix bug where cookie data such as device id from older releases were not updated
6+
7+
### 4.1.0 (January 18, 2018)
48

59
* Allow for numeric user ids
610

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Please see our [installation guide](https://amplitude.zendesk.com/hc/en-us/artic
1111
[![npm version](https://badge.fury.io/js/amplitude-js.svg)](https://badge.fury.io/js/amplitude-js)
1212
[![Bower version](https://badge.fury.io/bo/amplitude-js.svg)](https://badge.fury.io/bo/amplitude-js)
1313

14-
[4.1.0 - Released on January 18, 2018](https://github.com/amplitude/Amplitude-JavaScript/releases/latest)
14+
[4.1.1 - Released on March 22, 2018](https://github.com/amplitude/Amplitude-JavaScript/releases/latest)
1515

1616

1717
# JavaScript SDK Reference #

amplitude-snippet.min.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script")
22
;r.type="text/javascript";r.async=true
3-
;r.src="https://cdn.amplitude.com/libs/amplitude-4.1.0-min.gz.js"
3+
;r.src="https://cdn.amplitude.com/libs/amplitude-4.1.1-min.gz.js"
44
;r.onload=function(){if(e.amplitude.runQueuedFunctions){
55
e.amplitude.runQueuedFunctions()}else{
66
console.log("[Amplitude] Error: could not load SDK")}}

amplitude.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5627,7 +5627,7 @@ var uuid$1 = function uuid(a) {
56275627
);
56285628
};
56295629

5630-
var version = '4.1.0';
5630+
var version = '4.1.1';
56315631

56325632
var getLanguage = function getLanguage() {
56335633
return navigator && (navigator.languages && navigator.languages[0] || navigator.language || navigator.userLanguage) || undefined;
@@ -6026,8 +6026,13 @@ AmplitudeClient.prototype._setInStorage = function _setInStorage(storage, key, v
60266026
* @private
60276027
*/
60286028
var _upgradeCookeData = function _upgradeCookeData(scope) {
6029-
// skip if migration already happened
6029+
// skip if already migrated to 4.10+
60306030
var cookieData = scope.cookieStorage.get(scope.options.cookieName + scope._storageSuffix);
6031+
if (type(cookieData) === 'object') {
6032+
return;
6033+
}
6034+
// skip if already migrated to 2.70+
6035+
cookieData = scope.cookieStorage.get(scope.options.cookieName + scope._legacyStorageSuffix);
60316036
if (type(cookieData) === 'object' && cookieData.deviceId && cookieData.sessionId && cookieData.lastEventTime) {
60326037
return;
60336038
}

amplitude.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "amplitude-js",
33
"author": "Amplitude <[email protected]>",
4-
"version": "4.1.0",
4+
"version": "4.1.1",
55
"license": "MIT",
66
"description": "Javascript library for Amplitude Analytics",
77
"keywords": [

src/amplitude-client.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,13 @@ AmplitudeClient.prototype._setInStorage = function _setInStorage(storage, key, v
383383
* @private
384384
*/
385385
var _upgradeCookeData = function _upgradeCookeData(scope) {
386-
// skip if migration already happened
386+
// skip if already migrated to 4.10+
387387
var cookieData = scope.cookieStorage.get(scope.options.cookieName + scope._storageSuffix);
388+
if (type(cookieData) === 'object') {
389+
return;
390+
}
391+
// skip if already migrated to 2.70+
392+
cookieData = scope.cookieStorage.get(scope.options.cookieName + scope._legacyStorageSuffix);
388393
if (type(cookieData) === 'object' && cookieData.deviceId && cookieData.sessionId && cookieData.lastEventTime) {
389394
return;
390395
}

src/amplitude-snippet.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
var as = document.createElement('script');
44
as.type = 'text/javascript';
55
as.async = true;
6-
as.src = 'https://cdn.amplitude.com/libs/amplitude-4.1.0-min.gz.js';
6+
as.src = 'https://cdn.amplitude.com/libs/amplitude-4.1.1-min.gz.js';
77
as.onload = function() {if(window.amplitude.runQueuedFunctions) {window.amplitude.runQueuedFunctions();} else {console.log('[Amplitude] Error: could not load SDK');}};
88
var s = document.getElementsByTagName('script')[0];
99
s.parentNode.insertBefore(as, s);

src/version.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default '4.1.0';
1+
export default '4.1.1';

test/amplitude-client.js

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,41 @@ describe('AmplitudeClient', function() {
241241
assert.equal(cookieData.sequenceNumber, 5000);
242242
});
243243

244-
it('should migrate cookie data from old cookie name and ignore local storage values', function(){
244+
it('should load device id from the cookie', function(){
245245
var now = new Date().getTime();
246246

247247
// deviceId and sequenceNumber not set, init should load value from localStorage
248+
var cookieData = {
249+
deviceId: 'current_device_id',
250+
}
251+
252+
cookie.set(amplitude.options.cookieName + '_' + apiKey, cookieData);
253+
254+
amplitude.init(apiKey);
255+
assert.equal(amplitude.options.deviceId, 'current_device_id');
256+
});
257+
258+
it('should migrate device id from old non name spaced cookie name (pre 4.10)', function(){
259+
var now = new Date().getTime();
260+
261+
var cookieData = {
262+
deviceId: 'old_device_id',
263+
optOut: false,
264+
sessionId: now,
265+
lastEventTime: now,
266+
eventId: 50,
267+
identifyId: 60
268+
}
269+
270+
cookie.set(amplitude.options.cookieName, cookieData);
271+
272+
amplitude.init(apiKey);
273+
assert.equal(amplitude.options.deviceId, 'old_device_id');
274+
});
275+
276+
it('should migrate cookie data from old cookie name and ignore local storage values', function(){
277+
var now = new Date().getTime();
278+
248279
var cookieData = {
249280
userId: 'test_user_id',
250281
optOut: false,
@@ -254,7 +285,7 @@ describe('AmplitudeClient', function() {
254285
identifyId: 60
255286
}
256287

257-
cookie.set(amplitude.options.cookieName + '_' + apiKey, cookieData);
288+
cookie.set(amplitude.options.cookieName, cookieData);
258289
localStorage.setItem('amplitude_deviceId' + keySuffix, 'old_device_id');
259290
localStorage.setItem('amplitude_userId' + keySuffix, 'fake_user_id');
260291
localStorage.setItem('amplitude_optOut' + keySuffix, true);
@@ -278,7 +309,7 @@ describe('AmplitudeClient', function() {
278309
it('should skip the migration if the new cookie already has deviceId, sessionId, lastEventTime', function() {
279310
var now = new Date().getTime();
280311

281-
cookie.set(amplitude.options.cookieName + '_' + apiKey, {
312+
cookie.set(amplitude.options.cookieName, {
282313
deviceId: 'new_device_id',
283314
sessionId: now,
284315
lastEventTime: now

0 commit comments

Comments
 (0)