From 164ea5735fe1262057f0edcb129fcd28d7a739ee Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 28 Oct 2021 15:01:00 +0200 Subject: [PATCH] Merge pull request #5466 from overleaf/tm-gallery-analytics-duplicated-template Add analytics data for duplicated projects (include from template data) GitOrigin-RevId: 8072b4e3ccca634557a67d9f2cca4d87f63f786b --- .../src/Features/Project/ProjectCreationHandler.js | 1 + .../app/src/Features/Project/ProjectDuplicator.js | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/services/web/app/src/Features/Project/ProjectCreationHandler.js b/services/web/app/src/Features/Project/ProjectCreationHandler.js index 8356d640da..f5eeffccb2 100644 --- a/services/web/app/src/Features/Project/ProjectCreationHandler.js +++ b/services/web/app/src/Features/Project/ProjectCreationHandler.js @@ -38,6 +38,7 @@ async function createBlankProject(ownerId, projectName, attributes = {}) { 'fromV1TemplateId', 'fromV1TemplateVersionId', ]) + Object.assign(segmentation, attributes.segmentation) segmentation.projectId = project._id if (isImport) { AnalyticsManager.recordEventForUser( diff --git a/services/web/app/src/Features/Project/ProjectDuplicator.js b/services/web/app/src/Features/Project/ProjectDuplicator.js index d68b550788..e06949f2ca 100644 --- a/services/web/app/src/Features/Project/ProjectDuplicator.js +++ b/services/web/app/src/Features/Project/ProjectDuplicator.js @@ -16,6 +16,7 @@ const ProjectLocator = require('./ProjectLocator') const ProjectOptionsHandler = require('./ProjectOptionsHandler') const SafePath = require('./SafePath') const TpdsProjectFlusher = require('../ThirdPartyDataStore/TpdsProjectFlusher') +const _ = require('lodash') module.exports = { duplicate: callbackify(duplicate), @@ -32,6 +33,8 @@ async function duplicate(owner, originalProjectId, newProjectName) { compiler: true, rootFolder: true, rootDoc_id: true, + fromV1TemplateId: true, + fromV1TemplateVersionId: true, } ) const { path: rootDocPath } = await ProjectLocator.promises.findRootDoc({ @@ -40,10 +43,18 @@ async function duplicate(owner, originalProjectId, newProjectName) { const originalEntries = _getFolderEntries(originalProject.rootFolder[0]) + // Pass template ID as analytics segmentation if duplicating project from a template + const segmentation = _.pick(originalProject, [ + 'fromV1TemplateId', + 'fromV1TemplateVersionId', + ]) + segmentation.duplicatedFromProject = originalProjectId + // Now create the new project, cleaning it up on failure if necessary const newProject = await ProjectCreationHandler.promises.createBlankProject( owner._id, - newProjectName + newProjectName, + { segmentation } ) try {