From 8e0971e00164dfb6206e73e51da9329b2f5f2009 Mon Sep 17 00:00:00 2001 From: Alyssa Yu Date: Thu, 18 Nov 2021 15:33:47 -0800 Subject: [PATCH] feat: update setLibrary api make it ignore the null value of name or version (#449) * feat: add more interface for flutter web support * patch: code clean up and other fix * test: add setUserId test * patch: test update * patch: remove unnecessary api interface * patch: make setLibrary function able to seprate set library name and version * patch: make setLibrary function able to seprate set library name and version * patch: setLibrary improvement * patch: make groupIdentify and identify api enable to pass outOfSession info * test: add test and chagnes based on comments --- src/amplitude-client.js | 17 +++++++++++------ test/amplitude-client.js | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/amplitude-client.js b/src/amplitude-client.js index 76d24926..9d393a8b 100644 --- a/src/amplitude-client.js +++ b/src/amplitude-client.js @@ -1114,7 +1114,7 @@ var _convertProxyObjectToRealObject = function _convertProxyObjectToRealObject(i * var identify = new amplitude.Identify().set('colors', ['rose', 'gold']).add('karma', 1).setOnce('sign_up_date', '2016-03-31'); * amplitude.identify(identify); */ -AmplitudeClient.prototype.identify = function (identify_obj, opt_callback, opt_error_callback) { +AmplitudeClient.prototype.identify = function (identify_obj, opt_callback, opt_error_callback, outOfSession) { if (this._shouldDeferCall()) { return this._q.push(['identify'].concat(Array.prototype.slice.call(arguments, 0))); } @@ -1142,6 +1142,7 @@ AmplitudeClient.prototype.identify = function (identify_obj, opt_callback, opt_e null, opt_callback, opt_error_callback, + outOfSession, ); } else { _logErrorsWithCallbacks(opt_callback, opt_error_callback, 0, 'No request sent', { @@ -1162,6 +1163,7 @@ AmplitudeClient.prototype.groupIdentify = function ( identify_obj, opt_callback, opt_error_callback, + outOfSession, ) { if (this._shouldDeferCall()) { return this._q.push(['groupIdentify'].concat(Array.prototype.slice.call(arguments, 0))); @@ -1205,6 +1207,7 @@ AmplitudeClient.prototype.groupIdentify = function ( null, opt_callback, opt_error_callback, + outOfSession, ); } else { _logErrorsWithCallbacks(opt_callback, opt_error_callback, 0, 'No request sent', { @@ -1908,11 +1911,13 @@ AmplitudeClient.prototype.__VERSION__ = function getVersion() { * @param {string} name - Custom library name * @param {string} version - Custom library version */ -AmplitudeClient.prototype.setLibrary = function setLibrary( - name = this.options.libraryName, - version = this.options.libraryVersion, -) { - this.options.library = { name: name, version: version }; +AmplitudeClient.prototype.setLibrary = function setLibrary(name, version) { + if (name !== null && typeof name !== 'undefined') { + this.options.library.name = name; + } + if (version !== null && typeof version !== 'undefined') { + this.options.library.version = version; + } }; /** diff --git a/test/amplitude-client.js b/test/amplitude-client.js index 78bb6018..ee6f0897 100644 --- a/test/amplitude-client.js +++ b/test/amplitude-client.js @@ -1526,6 +1526,15 @@ describe('AmplitudeClient', function () { assert.equal(value, 0); assert.equal(message, 'No request sent'); }); + + it('should out of session', function () { + var identify = new Identify().set('prop1', 'value1'); + amplitude.groupIdentify(group_type, group_name, identify, true); + + assert.lengthOf(amplitude._unsentEvents, 0); + assert.lengthOf(amplitude._unsentIdentifys, 1); + assert.deepEqual(amplitude._unsentIdentifys[0].event.session_id, -1); + }); }); describe('logEvent with tracking options', function () { @@ -2668,6 +2677,16 @@ describe('AmplitudeClient', function () { assert.deepEqual(amplitude._unsentIdentifys[0].event.user_properties, { $set: { 10: 10 } }); }); + it('should out of session', function () { + var identify = new Identify().set(10, 10); + amplitude.init(apiKey); + amplitude.identify(identify, null, null, true); + + assert.lengthOf(amplitude._unsentEvents, 0); + assert.lengthOf(amplitude._unsentIdentifys, 1); + assert.deepEqual(amplitude._unsentIdentifys[0].event.session_id, -1); + }); + it('should ignore event and user properties with too many items', function () { amplitude.init(apiKey, null, { batchEvents: true, eventUploadThreshold: 2 }); var eventProperties = {};