From b1c34702e09032b9435551eff7c52b24d25584be Mon Sep 17 00:00:00 2001 From: Jaanus Sellin Date: Wed, 29 Mar 2023 15:28:09 +0300 Subject: [PATCH] fix: hide project stats behind flag and backport to 4.21 (#3419) --- src/lib/services/project-service.ts | 33 ++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/lib/services/project-service.ts b/src/lib/services/project-service.ts index e229b34552..bb3067b77c 100644 --- a/src/lib/services/project-service.ts +++ b/src/lib/services/project-service.ts @@ -18,7 +18,12 @@ import { ProjectGroupUpdateRoleEvent, FEATURE_ENVIRONMENT_ENABLED, } from '../types/events'; -import { IUnleashStores, IUnleashConfig, IAccountStore } from '../types'; +import { + IUnleashStores, + IUnleashConfig, + IAccountStore, + IFlagResolver, +} from '../types'; import { FeatureToggle, IProject, @@ -108,6 +113,8 @@ export default class ProjectService { private projectStatsStore: IProjectStatsStore; + private flagResolver: IFlagResolver; + constructor( { projectStore, @@ -150,6 +157,7 @@ export default class ProjectService { this.accountStore = accountStore; this.groupService = groupService; this.projectStatsStore = projectStatsStore; + this.flagResolver = config.flagResolver; this.logger = config.getLogger('services/project-service.js'); } @@ -809,9 +817,8 @@ export default class ProjectService { project: projectId, userId, }), - this.projectStatsStore.getProjectStats(projectId), + this.getProjectStats(projectId), ]); - return { stats: projectStats, name: project.name, @@ -825,4 +832,24 @@ export default class ProjectService { version: 1, }; } + + getProjectStats = async (projectId: string): Promise => { + if (this.flagResolver.isEnabled('projectStatusApi')) { + const projectStats = await this.projectStatsStore.getProjectStats( + projectId, + ); + return projectStats; + } + return { + archivedCurrentWindow: 0, + archivedPastWindow: 0, + avgTimeToProdCurrentWindow: 0, + avgTimeToProdPastWindow: 0, + createdCurrentWindow: 0, + createdPastWindow: 0, + projectActivityCurrentWindow: 0, + projectActivityPastWindow: 0, + projectMembersAddedCurrentWindow: 0, + }; + }; }