Skip to content

Commit 44f71c8

Browse files
committed
Added ability to specifiy domain with cookies
1 parent 3e487d4 commit 44f71c8

File tree

1 file changed

+44
-27
lines changed

1 file changed

+44
-27
lines changed

src/amplitude.js

Lines changed: 44 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -787,18 +787,19 @@
787787
}
788788
return null;
789789
},
790-
set: function(name, value, days) {
790+
set: function(name, value, days, domain) {
791791
if (days) {
792792
var date = new Date();
793793
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
794794
var expires = '; expires=' + date.toGMTString();
795795
} else {
796796
var expires = '';
797797
}
798-
document.cookie = name + '=' + value + expires + '; path=/';
798+
var cookieString = name + '=' + value + expires + '; path=/' + (domain ? (";domain=" + domain) : "");
799+
document.cookie = cookieString;
799800
},
800-
remove: function(name) {
801-
Cookie.set(name, '', -1);
801+
remove: function(name, domain) {
802+
Cookie.set(name, '', -1, domain);
802803
}
803804
};
804805

@@ -812,7 +813,8 @@
812813
cookieName: 'amplitude_id',
813814
cookieExpiration: 365 * 10,
814815
unsentKey: 'amplitude_unsent',
815-
saveEvents: true
816+
saveEvents: true,
817+
domain: ''
816818
};
817819

818820
var eventId = 0;
@@ -841,27 +843,7 @@
841843
}
842844
}
843845

844-
// Load cookie data
845-
var cookie = Cookie.get(options.cookieName);
846-
var cookieData = null;
847-
if (cookie) {
848-
try {
849-
cookieData = JSON.parse(Base64.decode(cookie));
850-
if (cookieData) {
851-
if (cookieData.deviceId) {
852-
options.deviceId = cookieData.deviceId;
853-
}
854-
if (cookieData.userId) {
855-
options.userId = cookieData.userId;
856-
}
857-
if (cookieData.globalUserProperties) {
858-
options.globalUserProperties = cookieData.globalUserProperties;
859-
}
860-
}
861-
} catch (e) {
862-
//log(e);
863-
}
864-
}
846+
loadCookieData();
865847

866848
options.deviceId = options.deviceId || UUID();
867849
options.userId = (opt_userId !== undefined && opt_userId !== null && opt_userId) || options.userId || null;
@@ -889,12 +871,35 @@
889871
}
890872
};
891873

874+
var loadCookieData = function() {
875+
var cookie = Cookie.get(options.cookieName);
876+
var cookieData = null;
877+
if (cookie) {
878+
try {
879+
cookieData = JSON.parse(Base64.decode(cookie));
880+
if (cookieData) {
881+
if (cookieData.deviceId) {
882+
options.deviceId = cookieData.deviceId;
883+
}
884+
if (cookieData.userId) {
885+
options.userId = cookieData.userId;
886+
}
887+
if (cookieData.globalUserProperties) {
888+
options.globalUserProperties = cookieData.globalUserProperties;
889+
}
890+
}
891+
} catch (e) {
892+
//log(e);
893+
}
894+
}
895+
};
896+
892897
var saveCookieData = function() {
893898
Cookie.set(options.cookieName, Base64.encode(JSON.stringify({
894899
deviceId: options.deviceId,
895900
userId: options.userId,
896901
globalUserProperties: options.globalUserProperties
897-
})), options.cookieExpiration);
902+
})), options.cookieExpiration, options.domain);
898903
};
899904

900905
var saveEvents = function() {
@@ -905,6 +910,18 @@
905910
}
906911
};
907912

913+
Amplitude.prototype.setDomain = function(domain) {
914+
try {
915+
options.domain = (domain !== undefined && domain !== null && ('' + domain)) || null;
916+
options.cookieName = "amplitude_id" + (options.domain || '');
917+
loadCookieData();
918+
saveCookieData();
919+
//log('set domain=' + domain);
920+
} catch (e) {
921+
log(e);
922+
}
923+
};
924+
908925
Amplitude.prototype.setUserId = function(userId) {
909926
try {
910927
options.userId = (userId !== undefined && userId !== null && ('' + userId)) || null;

0 commit comments

Comments
 (0)