feat(metrics): filter backbone metrics when opted-out (#10832)

closes #9083
This commit is contained in:
Danny Coates 2021-10-27 11:51:39 -07:00 коммит произвёл GitHub
Родитель f74b8c4515
Коммит c14d4aac4e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 25 добавлений и 11 удалений

Просмотреть файл

@ -1,8 +1,9 @@
#!/bin/bash -e
RETRY=30
RETRY=60
for i in $(eval echo "{1..$RETRY}"); do
if [ "$(curl -s -o /dev/null --silent -w "%{http_code}" http://$1)" == "${2:-200}" ]; then
echo "took $i seconds"
exit 0
else
if [ "$i" -lt $RETRY ]; then

Просмотреть файл

@ -113,6 +113,7 @@ function getUpdatedSessionData(email, relier, accountData, options = {}) {
verificationMethod: accountData.verificationMethod,
verificationReason: accountData.verificationReason,
verified: accountData.verified || false,
metricsEnabled: accountData.metricsEnabled || false,
};
if (wantsKeys(relier, sessionTokenContext)) {

Просмотреть файл

@ -185,6 +185,7 @@ function Metrics(options = {}) {
this._startTime = options.startTime || this._speedTrap.baseTime;
this._syncEngines = options.syncEngines || [];
this._uid = options.uid || NOT_REPORTED_VALUE;
this._metricsEnabled = options.metricsEnabled ?? true;
this._uniqueUserId = options.uniqueUserId || NOT_REPORTED_VALUE;
this._userPreferences = {};
this._utmCampaign = options.utmCampaign || NOT_REPORTED_VALUE;
@ -521,6 +522,9 @@ _.extend(Metrics.prototype, Backbone.Events, {
},
_send(data, isPageUnloading) {
if (!this._metricsEnabled) {
return Promise.resolve(true);
}
const url = `${this._collector}/metrics`;
const payload = JSON.stringify(data);
@ -856,10 +860,13 @@ _.extend(Metrics.prototype, Backbone.Events, {
}
},
_setUid(uid) {
_setUid(uid, metricsEnabled) {
if (uid) {
this._uid = uid;
}
if (typeof metricsEnabled !== 'undefined') {
this._metricsEnabled = !!metricsEnabled;
}
},
_setPlanProductId({ planId, productId }) {

Просмотреть файл

@ -770,7 +770,11 @@ const Account = Backbone.Model.extend(
this.set(updatedSessionData);
this._notifier.trigger('set-uid', this.get('uid'));
this._notifier.trigger(
'set-uid',
this.get('uid'),
this.get('metricsEnabled')
);
return updatedSessionData;
})

Просмотреть файл

@ -11,7 +11,8 @@ export default {
*/
getUidAndSetSignedInAccount() {
const uid = this.relier.get('uid');
this.notifier.trigger('set-uid', uid);
const metricsEnabled = this.relier.get('metricsEnabled');
this.notifier.trigger('set-uid', uid, metricsEnabled);
// A uid param is set by RPs linking directly to the settings
// page for a particular account.

Просмотреть файл

@ -498,7 +498,7 @@ describe('models/account', function () {
it('emits set-uid event correctly', () => {
assert.equal(notifier.trigger.callCount, 1);
const args = notifier.trigger.args[0];
assert.lengthOf(args, 2);
assert.lengthOf(args, 3);
assert.equal(args[0], 'set-uid');
assert.equal(args[1], UID);
});
@ -545,7 +545,7 @@ describe('models/account', function () {
it('emits set-uid event correctly', () => {
assert.equal(notifier.trigger.callCount, 1);
const args = notifier.trigger.args[0];
assert.lengthOf(args, 2);
assert.lengthOf(args, 3);
assert.equal(args[0], 'set-uid');
assert.equal(args[1], UID);
});
@ -591,7 +591,7 @@ describe('models/account', function () {
it('emits set-uid event correctly', () => {
assert.equal(notifier.trigger.callCount, 1);
const args = notifier.trigger.args[0];
assert.lengthOf(args, 2);
assert.lengthOf(args, 3);
assert.equal(args[0], 'set-uid');
assert.equal(args[1], UID);
});
@ -807,7 +807,7 @@ describe('models/account', function () {
it('emits set-uid event correctly', () => {
assert.equal(notifier.trigger.callCount, 1);
const args = notifier.trigger.args[0];
assert.lengthOf(args, 2);
assert.lengthOf(args, 3);
assert.equal(args[0], 'set-uid');
assert.equal(args[1], UID);
});
@ -860,7 +860,7 @@ describe('models/account', function () {
it('emits set-uid event correctly', () => {
assert.equal(notifier.trigger.callCount, 1);
const args = notifier.trigger.args[0];
assert.lengthOf(args, 2);
assert.lengthOf(args, 3);
assert.equal(args[0], 'set-uid');
assert.equal(args[1], UID);
});
@ -917,7 +917,7 @@ describe('models/account', function () {
it('emits set-uid event correctly', () => {
assert.equal(notifier.trigger.callCount, 1);
const args = notifier.trigger.args[0];
assert.lengthOf(args, 2);
assert.lengthOf(args, 3);
assert.equal(args[0], 'set-uid');
assert.equal(args[1], UID);
});
@ -1043,7 +1043,7 @@ describe('models/account', function () {
it('emits set-uid event correctly', () => {
assert.equal(notifier.trigger.callCount, 1);
const args = notifier.trigger.args[0];
assert.lengthOf(args, 2);
assert.lengthOf(args, 3);
assert.equal(args[0], 'set-uid');
assert.equal(args[1], UID);
});