From 0988626a4036f503f0065e821179d9c322983057 Mon Sep 17 00:00:00 2001 From: janoshrubos Date: Tue, 19 Jan 2021 10:58:03 +0100 Subject: [PATCH 1/4] perf: initialize project data if needed --- lib/definitions/project.d.ts | 1 + lib/services/project-data-service.ts | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/definitions/project.d.ts b/lib/definitions/project.d.ts index d8f77881be..ba58abb0c1 100644 --- a/lib/definitions/project.d.ts +++ b/lib/definitions/project.d.ts @@ -165,6 +165,7 @@ interface IProjectData extends ICreateProjectData { infoPlistPath: string; buildXcconfigPath: string; podfilePath: string; + initialized?: boolean; /** * Defines if the project is a code sharing one. * Value is true when project has nativescript.config and it has `shared: true` in it. diff --git a/lib/services/project-data-service.ts b/lib/services/project-data-service.ts index 5c82d4e6eb..4573ac8668 100644 --- a/lib/services/project-data-service.ts +++ b/lib/services/project-data-service.ts @@ -119,8 +119,10 @@ export class ProjectDataService implements IProjectDataService { this.projectDataCache[projectDir] = this.projectDataCache[projectDir] || this.$injector.resolve(ProjectData); - this.projectDataCache[projectDir].initializeProjectData(projectDir); - + if (!this.projectDataCache[projectDir].initialized) { + this.projectDataCache[projectDir].initializeProjectData(projectDir); + this.projectDataCache[projectDir].initialized = true; + } return this.projectDataCache[projectDir]; } From 50827e17f3ab323b2e433a25e0ec3338eb54844b Mon Sep 17 00:00:00 2001 From: Janos Hrubos <33330538+janoshrubos@users.noreply.github.com> Date: Tue, 26 Jan 2021 20:13:07 +0100 Subject: [PATCH 2/4] refactor: move validation to initializeProjectData --- lib/project-data.ts | 6 +++++- lib/services/project-data-service.ts | 5 +---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/project-data.ts b/lib/project-data.ts index a67a3b5b8a..9385f34307 100644 --- a/lib/project-data.ts +++ b/lib/project-data.ts @@ -98,6 +98,7 @@ export class ProjectData implements IProjectData { public isShared: boolean; public previewAppSchema: string; public webpackConfigPath: string; + public initialized: boolean; constructor( private $fs: IFileSystem, @@ -125,7 +126,10 @@ export class ProjectData implements IProjectData { if (this.$fs.exists(projectFilePath)) { const packageJsonContent = this.$fs.readText(projectFilePath); - this.initializeProjectDataFromContent(packageJsonContent, projectDir); + if (!this.initialized) { + this.initializeProjectDataFromContent(packageJsonContent, projectDir); + this.initialized = true; + } } return; diff --git a/lib/services/project-data-service.ts b/lib/services/project-data-service.ts index 4573ac8668..544755d8c4 100644 --- a/lib/services/project-data-service.ts +++ b/lib/services/project-data-service.ts @@ -119,10 +119,7 @@ export class ProjectDataService implements IProjectDataService { this.projectDataCache[projectDir] = this.projectDataCache[projectDir] || this.$injector.resolve(ProjectData); - if (!this.projectDataCache[projectDir].initialized) { - this.projectDataCache[projectDir].initializeProjectData(projectDir); - this.projectDataCache[projectDir].initialized = true; - } + this.projectDataCache[projectDir].initializeProjectData(projectDir); return this.projectDataCache[projectDir]; } From 4b06d45928c6c4f4e0903a60b0ad7f5b765b1918 Mon Sep 17 00:00:00 2001 From: Janos Hrubos <33330538+janoshrubos@users.noreply.github.com> Date: Tue, 26 Jan 2021 20:42:17 +0100 Subject: [PATCH 3/4] refactor: check initialization in the beginning of initializeProjectData --- lib/project-data.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/project-data.ts b/lib/project-data.ts index 9385f34307..40541a56b9 100644 --- a/lib/project-data.ts +++ b/lib/project-data.ts @@ -117,6 +117,9 @@ export class ProjectData implements IProjectData { } public initializeProjectData(projectDir?: string): void { + if (!this.initialized) { + return; + } projectDir = projectDir || this.$projectHelper.projectDir; // If no project found, projectDir should be null @@ -126,10 +129,8 @@ export class ProjectData implements IProjectData { if (this.$fs.exists(projectFilePath)) { const packageJsonContent = this.$fs.readText(projectFilePath); - if (!this.initialized) { - this.initializeProjectDataFromContent(packageJsonContent, projectDir); - this.initialized = true; - } + this.initializeProjectDataFromContent(packageJsonContent, projectDir); + this.initialized = true; } return; From dea3a027b0b69748324a2bc53f3ce2d8d5eb9542 Mon Sep 17 00:00:00 2001 From: Janos Hrubos <33330538+janoshrubos@users.noreply.github.com> Date: Tue, 26 Jan 2021 20:48:14 +0100 Subject: [PATCH 4/4] fix: negate type-o fix --- lib/project-data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/project-data.ts b/lib/project-data.ts index 40541a56b9..cb1794fb07 100644 --- a/lib/project-data.ts +++ b/lib/project-data.ts @@ -117,7 +117,7 @@ export class ProjectData implements IProjectData { } public initializeProjectData(projectDir?: string): void { - if (!this.initialized) { + if (this.initialized) { return; } projectDir = projectDir || this.$projectHelper.projectDir;