diff --git a/packages/core/admin/admin/src/components/AuthenticatedApp/index.js b/packages/core/admin/admin/src/components/AuthenticatedApp/index.js index 892158390e..6b21d8b93d 100644 --- a/packages/core/admin/admin/src/components/AuthenticatedApp/index.js +++ b/packages/core/admin/admin/src/components/AuthenticatedApp/index.js @@ -9,7 +9,6 @@ import { } from '@strapi/helper-plugin'; import { useQueries } from 'react-query'; import get from 'lodash/get'; -import { hashAdminUser } from '@strapi/utils'; import packageJSON from '../../../../package.json'; import { useConfigurations } from '../../hooks'; import PluginsInitializer from '../PluginsInitializer'; @@ -21,7 +20,7 @@ import { fetchUserRoles, } from './utils/api'; import checkLatestStrapiVersion from './utils/checkLatestStrapiVersion'; -import { getFullName } from '../../utils'; +import { getFullName, hashAdminUser } from '../../utils'; const strapiVersion = packageJSON.version; diff --git a/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js b/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js index 757b96b065..27b73a274d 100644 --- a/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js +++ b/packages/core/admin/admin/src/components/AuthenticatedApp/tests/index.test.js @@ -19,7 +19,9 @@ const strapiVersion = packageJSON.version; jest.mock('@strapi/helper-plugin', () => ({ ...jest.requireActual('@strapi/helper-plugin'), - auth: { getUserInfo: () => ({ firstname: 'kai', lastname: 'doe' }) }, + auth: { + getUserInfo: () => ({ firstname: 'kai', lastname: 'doe', email: 'testemail@strapi.io' }), + }, useGuidedTour: jest.fn(() => ({ setGuidedTourVisibility: jest.fn(), })), diff --git a/packages/core/admin/admin/src/utils/index.js b/packages/core/admin/admin/src/utils/index.js index 3601c6cff2..b197100f51 100644 --- a/packages/core/admin/admin/src/utils/index.js +++ b/packages/core/admin/admin/src/utils/index.js @@ -7,3 +7,4 @@ export { default as sortLinks } from './sortLinks'; export { default as getExistingActions } from './getExistingActions'; export { default as getRequestUrl } from './getRequestUrl'; export { default as getFullName } from './getFullName'; +export { default as hashAdminUser } from './unique-admin-hash'; diff --git a/packages/core/utils/lib/unique-admin-hash.js b/packages/core/admin/admin/src/utils/unique-admin-hash.js similarity index 95% rename from packages/core/utils/lib/unique-admin-hash.js rename to packages/core/admin/admin/src/utils/unique-admin-hash.js index b7d14e3311..c70cb8c8e5 100644 --- a/packages/core/utils/lib/unique-admin-hash.js +++ b/packages/core/admin/admin/src/utils/unique-admin-hash.js @@ -1,5 +1,3 @@ -'use strict'; - const crypto = require('crypto'); const hashAdminUser = payload => { diff --git a/packages/core/admin/server/controllers/__tests__/role.test.js b/packages/core/admin/server/controllers/__tests__/role.test.js index e4886dd9f5..2b5460c17d 100644 --- a/packages/core/admin/server/controllers/__tests__/role.test.js +++ b/packages/core/admin/server/controllers/__tests__/role.test.js @@ -81,11 +81,23 @@ describe('Role controller', () => { describe('updatePermissions', () => { test('Fails on missing permissions input', async () => { const findOne = jest.fn(() => Promise.resolve({ id: 1 })); + const hashAdminUser = jest.fn(() => 'testhash'); - const ctx = createContext({ - params: { id: 1 }, - body: {}, - }); + const state = { + user: { + id: 1, + }, + }; + + const ctx = createContext( + { + params: { id: 1 }, + body: {}, + }, + { + state, + } + ); global.strapi = { admin: { @@ -96,6 +108,9 @@ describe('Role controller', () => { role: { findOne, }, + 'user-hash': { + hashAdminUser, + }, }, }, }; @@ -112,13 +127,25 @@ describe('Role controller', () => { test('Fails on missing action permission', async () => { const findOne = jest.fn(() => Promise.resolve({ id: 1 })); + const hashAdminUser = jest.fn(() => 'testhash'); - const ctx = createContext({ - params: { id: 1 }, - body: { - permissions: [{}], + const state = { + user: { + id: 1, }, - }); + }; + + const ctx = createContext( + { + params: { id: 1 }, + body: { + permissions: [{}], + }, + }, + { + state, + } + ); global.strapi = { admin: { services: { @@ -128,6 +155,9 @@ describe('Role controller', () => { actionProvider: { get: jest.fn() }, conditionProvider: { values: jest.fn(() => []) }, }, + 'user-hash': { + hashAdminUser, + }, }, }, }; @@ -146,6 +176,7 @@ describe('Role controller', () => { const roleID = 1; const findOneRole = jest.fn(() => Promise.resolve({ id: roleID })); const assignPermissions = jest.fn((roleID, permissions) => Promise.resolve(permissions)); + const hashAdminUser = jest.fn(() => 'testhash'); const inputPermissions = [ { action: 'test', @@ -155,12 +186,23 @@ describe('Role controller', () => { }, ]; - const ctx = createContext({ - params: { id: roleID }, - body: { - permissions: inputPermissions, + const state = { + user: { + id: 1, }, - }); + }; + + const ctx = createContext( + { + params: { id: roleID }, + body: { + permissions: inputPermissions, + }, + }, + { + state, + } + ); global.strapi = { admin: { @@ -184,14 +226,20 @@ describe('Role controller', () => { })), }, }, + 'user-hash': { + hashAdminUser, + }, }, }, }; + const adminUserId = hashAdminUser(); + await roleController.updatePermissions(ctx); + expect(hashAdminUser).toHaveBeenCalledWith(ctx.state.user); expect(findOneRole).toHaveBeenCalledWith({ id: roleID }); - expect(assignPermissions).toHaveBeenCalledWith(roleID, inputPermissions); + expect(assignPermissions).toHaveBeenCalledWith(roleID, inputPermissions, adminUserId); expect(ctx.body).toEqual({ data: inputPermissions, diff --git a/packages/core/admin/server/controllers/__tests__/user.test.js b/packages/core/admin/server/controllers/__tests__/user.test.js index c299507503..15ffc18caa 100644 --- a/packages/core/admin/server/controllers/__tests__/user.test.js +++ b/packages/core/admin/server/controllers/__tests__/user.test.js @@ -15,7 +15,13 @@ describe('User Controller', () => { test('Fails if user already exist', async () => { const exists = jest.fn(() => Promise.resolve(true)); - const ctx = createContext({ body }); + const hashAdminUser = jest.fn(() => 'testhash'); + const state = { + user: { + id: 1, + }, + }; + const ctx = createContext({ body }, { state }); global.strapi = { admin: { @@ -23,6 +29,9 @@ describe('User Controller', () => { user: { exists, }, + 'user-hash': { + hashAdminUser, + }, }, }, }; @@ -44,8 +53,14 @@ describe('User Controller', () => { const exists = jest.fn(() => Promise.resolve(false)); const sanitizeUser = jest.fn(user => Promise.resolve(user)); const created = jest.fn(); - const ctx = createContext({ body }, { created }); - + const hashAdminUser = jest.fn(() => 'testhash'); + const state = { + user: { + id: 1, + }, + }; + const ctx = createContext({ body }, { state, created }); + console.log(ctx); global.strapi = { admin: { services: { @@ -54,14 +69,20 @@ describe('User Controller', () => { create, sanitizeUser, }, + 'user-hash': { + hashAdminUser, + }, }, }, }; + const adminUserId = hashAdminUser(); + await userController.create(ctx); + expect(hashAdminUser).toHaveBeenCalledWith(ctx.state.user); expect(exists).toHaveBeenCalledWith({ email: body.email }); - expect(create).toHaveBeenCalledWith(body); + expect(create).toHaveBeenCalledWith(body, adminUserId); expect(sanitizeUser).toHaveBeenCalled(); expect(created).toHaveBeenCalled(); }); diff --git a/packages/core/admin/server/services/__tests__/metrics.test.js b/packages/core/admin/server/services/__tests__/metrics.test.js index 024532e35d..358411c9a9 100644 --- a/packages/core/admin/server/services/__tests__/metrics.test.js +++ b/packages/core/admin/server/services/__tests__/metrics.test.js @@ -17,9 +17,14 @@ describe('Metrics', () => { }, }; - await metricsService.sendDidInviteUser(); + const adminUserId = 'testhash'; - expect(send).toHaveBeenCalledWith('didInviteUser', { numberOfRoles: 3, numberOfUsers: 2 }); + await metricsService.sendDidInviteUser(adminUserId); + + expect(send).toHaveBeenCalledWith(adminUserId, 'didInviteUser', { + numberOfRoles: 3, + numberOfUsers: 2, + }); expect(countUsers).toHaveBeenCalledWith(); expect(countRoles).toHaveBeenCalledWith(); }); @@ -30,9 +35,11 @@ describe('Metrics', () => { telemetry: { send }, }; - await metricsService.sendDidUpdateRolePermissions(); + const adminUserId = 'testhash'; - expect(send).toHaveBeenCalledWith('didUpdateRolePermissions'); + await metricsService.sendDidUpdateRolePermissions(adminUserId); + + expect(send).toHaveBeenCalledWith(adminUserId, 'didUpdateRolePermissions'); }); test('didChangeInterfaceLanguage', async () => { @@ -51,7 +58,7 @@ describe('Metrics', () => { await metricsService.sendDidChangeInterfaceLanguage(); expect(getLanguagesInUse).toHaveBeenCalledWith(); - expect(send).toHaveBeenCalledWith('didChangeInterfaceLanguage', { + expect(send).toHaveBeenCalledWith('', 'didChangeInterfaceLanguage', { languagesInUse: ['en', 'fr', 'en'], }); }); diff --git a/packages/core/admin/server/services/metrics.js b/packages/core/admin/server/services/metrics.js index cd287b9ff3..83ca483564 100644 --- a/packages/core/admin/server/services/metrics.js +++ b/packages/core/admin/server/services/metrics.js @@ -14,7 +14,7 @@ const sendDidUpdateRolePermissions = async adminUserId => { const sendDidChangeInterfaceLanguage = async () => { const languagesInUse = await getService('user').getLanguagesInUse(); - strapi.telemetry.send('didChangeInterfaceLanguage', { languagesInUse }); + strapi.telemetry.send('', 'didChangeInterfaceLanguage', { languagesInUse }); }; module.exports = { diff --git a/packages/core/content-manager/server/controllers/__tests__/single-types.test.js b/packages/core/content-manager/server/controllers/__tests__/single-types.test.js index f2f53fa1d1..30c44c4594 100644 --- a/packages/core/content-manager/server/controllers/__tests__/single-types.test.js +++ b/packages/core/content-manager/server/controllers/__tests__/single-types.test.js @@ -104,6 +104,7 @@ describe('Single Types', () => { const createFn = jest.fn(() => ({})); const sendTelemetry = jest.fn(() => ({})); + const hashAdminUser = jest.fn(() => 'testhash'); global.strapi = { admin: { @@ -111,6 +112,9 @@ describe('Single Types', () => { permission: { createPermissionsManager, }, + 'user-hash': { + hashAdminUser, + }, }, }, getModel() { @@ -165,8 +169,12 @@ describe('Single Types', () => { { state } ); + const adminUserId = hashAdminUser(); + await singleTypes.createOrUpdate(ctx); + expect(hashAdminUser).toHaveBeenCalledWith(ctx.state.user); + expect(permissionChecker.cannot.create).toHaveBeenCalled(); expect(createFn).toHaveBeenCalledWith( @@ -179,7 +187,7 @@ describe('Single Types', () => { { params: {} } ); - expect(sendTelemetry).toHaveBeenCalledWith('didCreateFirstContentTypeEntry', { + expect(sendTelemetry).toHaveBeenCalledWith(adminUserId, 'didCreateFirstContentTypeEntry', { model: modelUid, }); }); diff --git a/packages/core/content-manager/server/controllers/collection-types.js b/packages/core/content-manager/server/controllers/collection-types.js index 386377378c..7eeb1d9e52 100644 --- a/packages/core/content-manager/server/controllers/collection-types.js +++ b/packages/core/content-manager/server/controllers/collection-types.js @@ -65,6 +65,7 @@ module.exports = { const { userAbility, user } = ctx.state; const { model } = ctx.params; const { body } = ctx.request; + const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); const totalEntries = await strapi.query(model).count(); @@ -87,7 +88,7 @@ module.exports = { ctx.body = await permissionChecker.sanitizeOutput(entity); if (totalEntries === 0) { - strapi.telemetry.send('didCreateFirstContentTypeEntry', { model }); + strapi.telemetry.send(adminUserId, 'didCreateFirstContentTypeEntry', { model }); } }, diff --git a/packages/core/content-manager/server/controllers/content-types.js b/packages/core/content-manager/server/controllers/content-types.js index 190e50e018..43ed560dc9 100644 --- a/packages/core/content-manager/server/controllers/content-types.js +++ b/packages/core/content-manager/server/controllers/content-types.js @@ -75,6 +75,7 @@ module.exports = { const { userAbility } = ctx.state; const { uid } = ctx.params; const { body } = ctx.request; + const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); const contentTypeService = getService('content-types'); const metricsService = getService('metrics'); @@ -105,7 +106,7 @@ module.exports = { const newConfiguration = await contentTypeService.updateConfiguration(contentType, input); - await metricsService.sendDidConfigureListView(contentType, newConfiguration); + await metricsService.sendDidConfigureListView(contentType, newConfiguration, adminUserId); const confWithUpdatedMetadata = { ...newConfiguration, diff --git a/packages/core/content-manager/server/controllers/single-types.js b/packages/core/content-manager/server/controllers/single-types.js index 17350df9f5..bf4e678941 100644 --- a/packages/core/content-manager/server/controllers/single-types.js +++ b/packages/core/content-manager/server/controllers/single-types.js @@ -46,6 +46,7 @@ module.exports = { const { user, userAbility } = ctx.state; const { model } = ctx.params; const { body, query } = ctx.request; + const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); const entityManager = getService('entity-manager'); const permissionChecker = getService('permission-checker').create({ userAbility, model }); @@ -73,7 +74,7 @@ module.exports = { const newEntity = await entityManager.create(sanitizedBody, model, { params: query }); ctx.body = await permissionChecker.sanitizeOutput(newEntity); - await strapi.telemetry.send('didCreateFirstContentTypeEntry', { model }); + await strapi.telemetry.send(adminUserId, 'didCreateFirstContentTypeEntry', { model }); return; } diff --git a/packages/core/content-manager/server/services/__tests__/metrics.test.js b/packages/core/content-manager/server/services/__tests__/metrics.test.js index f71c52a03c..6ec0b1aa81 100644 --- a/packages/core/content-manager/server/services/__tests__/metrics.test.js +++ b/packages/core/content-manager/server/services/__tests__/metrics.test.js @@ -66,11 +66,16 @@ describe('metrics', () => { global.strapi = { telemetry: { send } }; metricsService = metricsServiceLoader({ strapi }); const [containsRelationalFields, displayedFields, displayedRelationalFields] = expectedResult; + const adminUserId = 'testhash'; - await metricsService.sendDidConfigureListView(contentType, { layouts: { list } }); + await metricsService.sendDidConfigureListView( + contentType, + { layouts: { list } }, + adminUserId + ); expect(send).toHaveBeenCalledTimes(1); - expect(send).toHaveBeenCalledWith('didConfigureListView', { + expect(send).toHaveBeenCalledWith(adminUserId, 'didConfigureListView', { displayedFields, containsRelationalFields, displayedRelationalFields, diff --git a/packages/core/content-manager/server/services/metrics.js b/packages/core/content-manager/server/services/metrics.js index 1fe1e4cd0a..ea20491f72 100644 --- a/packages/core/content-manager/server/services/metrics.js +++ b/packages/core/content-manager/server/services/metrics.js @@ -4,7 +4,7 @@ const { intersection, prop } = require('lodash/fp'); const { getRelationalFields } = require('@strapi/utils').relations; module.exports = ({ strapi }) => { - const sendDidConfigureListView = async (contentType, configuration) => { + const sendDidConfigureListView = async (contentType, configuration, adminUserId) => { const displayedFields = prop('length', configuration.layouts.list); const relationalFields = getRelationalFields(contentType); const displayedRelationalFields = intersection(relationalFields, configuration.layouts.list) @@ -22,7 +22,7 @@ module.exports = ({ strapi }) => { } try { - await strapi.telemetry.send('didConfigureListView', data); + await strapi.telemetry.send(adminUserId, 'didConfigureListView', data); } catch (e) { // silence } diff --git a/packages/core/content-type-builder/server/controllers/content-types.js b/packages/core/content-type-builder/server/controllers/content-types.js index bf00016f1d..346f5f3874 100644 --- a/packages/core/content-type-builder/server/controllers/content-types.js +++ b/packages/core/content-type-builder/server/controllers/content-types.js @@ -3,7 +3,6 @@ const _ = require('lodash'); const { hasDraftAndPublish } = require('@strapi/utils').contentTypes; -const { hashAdminUser } = require('@strapi/utils'); const { getService } = require('../utils'); const { validateContentTypeInput, @@ -48,6 +47,7 @@ module.exports = { async createContentType(ctx) { const { body } = ctx.request; + const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); try { await validateContentTypeInput(body); @@ -70,13 +70,10 @@ module.exports = { hasDraftAndPublish: hasDraftAndPublish(contentType.schema), }; - const adminUserId = hashAdminUser(ctx); - console.log(adminUserId); - if (_.isEmpty(strapi.api)) { - await strapi.telemetry.send('didCreateFirstContentType', metricsProperties); + await strapi.telemetry.send(adminUserId, 'didCreateFirstContentType', metricsProperties); } else { - await strapi.telemetry.send('didCreateContentType', metricsProperties); + await strapi.telemetry.send(adminUserId, 'didCreateContentType', metricsProperties); } setImmediate(() => strapi.reload()); @@ -84,7 +81,7 @@ module.exports = { ctx.send({ data: { uid: contentType.uid } }, 201); } catch (error) { strapi.log.error(error); - await strapi.telemetry.send('didNotCreateContentType', { error: error.message }); + await strapi.telemetry.send(adminUserId, 'didNotCreateContentType', { error: error.message }); ctx.send({ error: error.message }, 400); } }, diff --git a/packages/core/strapi/lib/Strapi.js b/packages/core/strapi/lib/Strapi.js index b06fbcb2af..67b8d6ce91 100644 --- a/packages/core/strapi/lib/Strapi.js +++ b/packages/core/strapi/lib/Strapi.js @@ -244,9 +244,9 @@ class Strapi { if (shouldOpenAdmin && !isInitialized) { try { await utils.openBrowser(this.config); - this.telemetry.send('didOpenTab'); + this.telemetry.send('', 'didOpenTab'); } catch (e) { - this.telemetry.send('didNotOpenTab'); + this.telemetry.send('', 'didNotOpenTab'); } } } diff --git a/packages/core/strapi/lib/services/metrics/__tests__/index.test.js b/packages/core/strapi/lib/services/metrics/__tests__/index.test.js index 03d36c34f0..96d5985ebd 100644 --- a/packages/core/strapi/lib/services/metrics/__tests__/index.test.js +++ b/packages/core/strapi/lib/services/metrics/__tests__/index.test.js @@ -91,16 +91,19 @@ describe('metrics', () => { }, }); - send('someEvent'); + const adminUserId = 'testhash'; + + send(adminUserId, 'someEvent'); expect(fetch).toHaveBeenCalled(); expect(fetch.mock.calls[0][0]).toBe('https://analytics.strapi.io/track'); expect(fetch.mock.calls[0][1].method).toBe('POST'); expect(JSON.parse(fetch.mock.calls[0][1].body)).toMatchObject({ event: 'someEvent', - uuid: 'test', + adminUserId: 'testhash', properties: { projectType: 'Community', + projectId: 'test', }, }); diff --git a/packages/core/strapi/lib/services/metrics/index.js b/packages/core/strapi/lib/services/metrics/index.js index 1df86a1042..e37941c179 100644 --- a/packages/core/strapi/lib/services/metrics/index.js +++ b/packages/core/strapi/lib/services/metrics/index.js @@ -39,7 +39,7 @@ const createTelemetryInstance = strapi => { register() { if (!isDisabled) { - const pingCron = scheduleJob('0 0 12 * * *', () => sendEvent('ping')); + const pingCron = scheduleJob('0 0 12 * * *', () => sendEvent('', 'ping')); crons.push(pingCron); strapi.server.use(createMiddleware({ sendEvent })); @@ -52,6 +52,7 @@ const createTelemetryInstance = strapi => { const sendLicenseCheck = () => { return sendEvent( + '', 'didCheckLicense', { licenseInfo: { diff --git a/packages/core/strapi/lib/services/metrics/sender.js b/packages/core/strapi/lib/services/metrics/sender.js index 3e7f13ff79..4af6bacf60 100644 --- a/packages/core/strapi/lib/services/metrics/sender.js +++ b/packages/core/strapi/lib/services/metrics/sender.js @@ -16,7 +16,7 @@ const defaultQueryOpts = { headers: { 'Content-Type': 'application/json' }, }; -const ANALYTICS_URI = 'http://localhost:4000'; +const ANALYTICS_URI = 'https://analytics.strapi.io'; /** * Add properties from the package.json strapi key in the metadata diff --git a/packages/core/upload/server/controllers/admin-settings.js b/packages/core/upload/server/controllers/admin-settings.js index 103ac9a383..581479c86f 100644 --- a/packages/core/upload/server/controllers/admin-settings.js +++ b/packages/core/upload/server/controllers/admin-settings.js @@ -1,6 +1,5 @@ 'use strict'; -const { hashAdminUser } = require('@strapi/utils/lib'); const { getService } = require('../utils'); const { ACTIONS, FILE_MODEL_UID } = require('../constants'); const validateSettings = require('./validation/admin/settings'); @@ -17,7 +16,7 @@ module.exports = { } const data = await validateSettings(body); - const adminUserId = hashAdminUser(ctx.state.user.email); + const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user.email); await getService('upload').setSettings(data, adminUserId); diff --git a/packages/core/upload/server/services/metrics.js b/packages/core/upload/server/services/metrics.js index bc03f34187..8f6f2ae79e 100644 --- a/packages/core/upload/server/services/metrics.js +++ b/packages/core/upload/server/services/metrics.js @@ -92,7 +92,7 @@ module.exports = ({ strapi }) => ({ async sendMetrics() { const metrics = await this.computeMetrics(); - strapi.telemetry.send('didSendUploadPropertiesOnceAWeek', metrics); + strapi.telemetry.send('', 'didSendUploadPropertiesOnceAWeek', metrics); const metricsInfoStored = await getMetricsStoreValue(); await setMetricsStoreValue({ ...metricsInfoStored, lastWeeklyUpdate: new Date().getTime() }); diff --git a/packages/core/utils/lib/index.js b/packages/core/utils/lib/index.js index 01b5dc7b3d..f09547a5d0 100644 --- a/packages/core/utils/lib/index.js +++ b/packages/core/utils/lib/index.js @@ -38,7 +38,6 @@ const pagination = require('./pagination'); const sanitize = require('./sanitize'); const traverseEntity = require('./traverse-entity'); const pipeAsync = require('./pipe-async'); -const hashAdminUser = require('./unique-admin-hash'); module.exports = { yup, @@ -80,5 +79,4 @@ module.exports = { errors, validateYupSchema, validateYupSchemaSync, - hashAdminUser, }; diff --git a/packages/plugins/i18n/server/services/__tests__/metrics.test.js b/packages/plugins/i18n/server/services/__tests__/metrics.test.js index c6f7af2951..40adee00a3 100644 --- a/packages/plugins/i18n/server/services/__tests__/metrics.test.js +++ b/packages/plugins/i18n/server/services/__tests__/metrics.test.js @@ -43,7 +43,7 @@ describe('Metrics', () => { await sendDidInitializeEvent(); - expect(strapi.telemetry.send).toHaveBeenCalledWith('didInitializeI18n', { + expect(strapi.telemetry.send).toHaveBeenCalledWith('', 'didInitializeI18n', { numberOfContentTypes: 1, }); }); @@ -87,7 +87,7 @@ describe('Metrics', () => { await sendDidUpdateI18nLocalesEvent(); - expect(strapi.telemetry.send).toHaveBeenCalledWith('didUpdateI18nLocales', { + expect(strapi.telemetry.send).toHaveBeenCalledWith('', 'didUpdateI18nLocales', { numberOfLocales: 3, }); }); diff --git a/packages/plugins/i18n/server/services/metrics.js b/packages/plugins/i18n/server/services/metrics.js index fabb2f8722..49f094603c 100644 --- a/packages/plugins/i18n/server/services/metrics.js +++ b/packages/plugins/i18n/server/services/metrics.js @@ -11,13 +11,13 @@ const sendDidInitializeEvent = async () => { 0 )(strapi.contentTypes); - await strapi.telemetry.send('didInitializeI18n', { numberOfContentTypes }); + await strapi.telemetry.send('', 'didInitializeI18n', { numberOfContentTypes }); }; const sendDidUpdateI18nLocalesEvent = async () => { const numberOfLocales = await getService('locales').count(); - await strapi.telemetry.send('didUpdateI18nLocales', { numberOfLocales }); + await strapi.telemetry.send('', 'didUpdateI18nLocales', { numberOfLocales }); }; module.exports = () => ({