diff --git a/packages/strapi-plugin-content-type-builder/controllers/ContentTypes.js b/packages/strapi-plugin-content-type-builder/controllers/ContentTypes.js index 91be1244b5..924b461e69 100644 --- a/packages/strapi-plugin-content-type-builder/controllers/ContentTypes.js +++ b/packages/strapi-plugin-content-type-builder/controllers/ContentTypes.js @@ -66,20 +66,20 @@ module.exports = { const contentTypeService = strapi.plugins['content-type-builder'].services.contenttypes; - const component = await contentTypeService.createContentType({ + const contentType = await contentTypeService.createContentType({ contentType: body.contentType, components: body.components, }); if (_.isEmpty(strapi.api)) { - await strapi.telemetry.send('didCreateFirstContentType'); + await strapi.telemetry.send('didCreateFirstContentType', { kind: contentType.kind }); } else { - await strapi.telemetry.send('didCreateContentType'); + await strapi.telemetry.send('didCreateContentType', { kind: contentType.kind }); } setImmediate(() => strapi.reload()); - ctx.send({ data: { uid: component.uid } }, 201); + ctx.send({ data: { uid: contentType.uid } }, 201); } catch (error) { strapi.log.error(error); await strapi.telemetry.send('didNotCreateContentType', { error: error.message }); diff --git a/packages/strapi-plugin-content-type-builder/services/Components.js b/packages/strapi-plugin-content-type-builder/services/Components.js index 334d908345..d501e0b631 100644 --- a/packages/strapi-plugin-content-type-builder/services/Components.js +++ b/packages/strapi-plugin-content-type-builder/services/Components.js @@ -41,7 +41,7 @@ const createComponent = async ({ component, components = [] }) => { const uidMap = builder.createNewComponentUIDMap(components); const replaceTmpUIDs = replaceTemporaryUIDs(uidMap); - const newComponent = builder.createComponent(replaceTmpUIDs(component)); + const newComponent = await builder.createComponent(replaceTmpUIDs(component)); components.forEach(component => { if (!_.has(component, 'uid')) { diff --git a/packages/strapi-plugin-content-type-builder/services/schema-builder/component-builder.js b/packages/strapi-plugin-content-type-builder/services/schema-builder/component-builder.js index acdb574eae..ea816f7468 100644 --- a/packages/strapi-plugin-content-type-builder/services/schema-builder/component-builder.js +++ b/packages/strapi-plugin-content-type-builder/services/schema-builder/component-builder.js @@ -30,7 +30,7 @@ module.exports = function createComponentBuilder() { /** * create a component in the tmpComponent map */ - async createComponent(infos) { + createComponent(infos) { const uid = this.createComponentUID(infos); if (this.components.has(uid)) { diff --git a/packages/strapi-plugin-content-type-builder/services/schema-builder/schema-handler.js b/packages/strapi-plugin-content-type-builder/services/schema-builder/schema-handler.js index d96a0c433d..ff4eb4331d 100644 --- a/packages/strapi-plugin-content-type-builder/services/schema-builder/schema-handler.js +++ b/packages/strapi-plugin-content-type-builder/services/schema-builder/schema-handler.js @@ -43,6 +43,10 @@ module.exports = function createSchemaHandler(infos) { return initialState.category; }, + get kind() { + return _.get(state.schema, 'kind', 'collectionType'); + }, + get uid() { return state.uid; }, @@ -162,9 +166,7 @@ module.exports = function createSchemaHandler(infos) { Array.isArray(attr.components) && attr.components.includes(uid) ) { - const updatedComponentList = attributes[key].components.filter( - val => val !== uid - ); + const updatedComponentList = attributes[key].components.filter(val => val !== uid); this.set(['attributes', key, 'components'], updatedComponentList); } }); @@ -187,9 +189,7 @@ module.exports = function createSchemaHandler(infos) { Array.isArray(attr.components) && attr.components.includes(uid) ) { - const updatedComponentList = attr.components.map(val => - val === uid ? newUID : val - ); + const updatedComponentList = attr.components.map(val => (val === uid ? newUID : val)); this.set(['attributes', key, 'components'], updatedComponentList); } diff --git a/packages/strapi-telemetry/lib/index.js b/packages/strapi-telemetry/lib/index.js index 92f74be30d..a2509dc251 100644 --- a/packages/strapi-telemetry/lib/index.js +++ b/packages/strapi-telemetry/lib/index.js @@ -11,18 +11,8 @@ const fetch = require('node-fetch'); const ciEnv = require('ci-info'); const { scheduleJob } = require('node-schedule'); -const isTruthyEnvVar = val => { - if (val === null || val === undefined) return false; - - if (val === true) return true; - - if (val.toString().toLowerCase() === 'true') return true; - if (val.toString().toLowerCase() === 'false') return false; - - if (val === 1) return true; - - return false; -}; +const createMiddleware = require('./middleware'); +const isTruthyEnvVar = require('./truthy-var'); const createTelemetryInstance = strapi => { const uuid = strapi.config.uuid; @@ -68,52 +58,18 @@ const createTelemetryInstance = strapi => { } }; - const _state = { - currentDay: null, - counter: 0, + const initPing = () => { + if (isDisabled) { + return; + } + + scheduleJob('0 0 12 * * *', () => sendEvent('ping')); }; return { - initPing() { - if (isDisabled) { - return; - } - - scheduleJob('0 0 12 * * *', () => sendEvent('ping')); - }, - middleware: async (ctx, next) => { - if (isDisabled) { - return next(); - } - - const { url, method } = ctx.request; - - if (!url.includes('.') && ['GET', 'PUT', 'POST', 'DELETE'].includes(method)) { - const dayOfMonth = new Date().getDate(); - - if (dayOfMonth !== _state.currentDay) { - _state.currentDay = dayOfMonth; - _state.counter = 0; - } - - // Send max. 1000 events per day. - if (_state.counter < 1000) { - await sendEvent('didReceiveRequest', { url: ctx.request.url }); - - // Increase counter. - _state.counter++; - } - } - - await next(); - }, - async send(event, properties) { - if (isDisabled) { - return true; - } - - await sendEvent(event, properties); - }, + initPing, + send: sendEvent, + middleware: createMiddleware({ sendEvent, isDisabled }), }; }; diff --git a/packages/strapi-telemetry/lib/middleware.js b/packages/strapi-telemetry/lib/middleware.js new file mode 100644 index 0000000000..3e114db9d4 --- /dev/null +++ b/packages/strapi-telemetry/lib/middleware.js @@ -0,0 +1,37 @@ +'use strict'; + +const createMiddleware = ({ sendEvent, isDisabled }) => { + const _state = { + currentDay: null, + counter: 0, + }; + + return async (ctx, next) => { + if (isDisabled) { + return next(); + } + + const { url, method } = ctx.request; + + if (!url.includes('.') && ['GET', 'PUT', 'POST', 'DELETE'].includes(method)) { + const dayOfMonth = new Date().getDate(); + + if (dayOfMonth !== _state.currentDay) { + _state.currentDay = dayOfMonth; + _state.counter = 0; + } + + // Send max. 1000 events per day. + if (_state.counter < 1000) { + await sendEvent('didReceiveRequest', { url: ctx.request.url }); + + // Increase counter. + _state.counter++; + } + } + + await next(); + }; +}; + +module.exports = createMiddleware; diff --git a/packages/strapi-telemetry/lib/truthy-var.js b/packages/strapi-telemetry/lib/truthy-var.js new file mode 100644 index 0000000000..d77f8febfb --- /dev/null +++ b/packages/strapi-telemetry/lib/truthy-var.js @@ -0,0 +1,16 @@ +'use strict'; + +const isTruthyEnvVar = val => { + if (val === null || val === undefined) return false; + + if (val === true) return true; + + if (val.toString().toLowerCase() === 'true') return true; + if (val.toString().toLowerCase() === 'false') return false; + + if (val === 1) return true; + + return false; +}; + +module.exports = isTruthyEnvVar;