diff --git a/apps/intellij/src/main/kotlin/dev/nx/console/generate/NxGenerateService.kt b/apps/intellij/src/main/kotlin/dev/nx/console/generate/NxGenerateService.kt index 3ac34cb816..9773bfb133 100644 --- a/apps/intellij/src/main/kotlin/dev/nx/console/generate/NxGenerateService.kt +++ b/apps/intellij/src/main/kotlin/dev/nx/console/generate/NxGenerateService.kt @@ -113,12 +113,8 @@ class NxGenerateService(val project: Project) { options: List? = null ) { val generatorOptions = - if (options != null) options - else { - val nxProjectNames = - project.service().workspace()?.workspace?.projects?.keys?.toList() - ?: emptyList() - project + options + ?: project .service() .generatorOptions( NxGeneratorOptionsRequestOptions( @@ -127,17 +123,6 @@ class NxGenerateService(val project: Project) { generator.path ) ) - .map { - if ( - it.name == "project" || - it.name == "projectName" || - it.dropdown == "projects" - ) { - it.items = nxProjectNames - } - it - } - } val generatorWithOptions = NxGenerator(generator, generatorOptions) diff --git a/libs/shared/nx-console-plugins/src/lib/internal-plugins/add-project-items-to-option-processor.ts b/libs/shared/nx-console-plugins/src/lib/internal-plugins/add-project-items-to-option-processor.ts new file mode 100644 index 0000000000..753a8e139b --- /dev/null +++ b/libs/shared/nx-console-plugins/src/lib/internal-plugins/add-project-items-to-option-processor.ts @@ -0,0 +1,20 @@ +import { GeneratorSchema } from '@nx-console/shared/generate-ui-types'; +import { SchemaProcessor } from '../nx-console-plugin-types'; +import { NxWorkspace } from '@nx-console/shared/types'; +import { isProjectOption } from '@nx-console/shared/schema'; + +export const addProjectItemsToOptionProcessor: SchemaProcessor = ( + schema: GeneratorSchema, + workspace: NxWorkspace +) => { + return { + ...schema, + options: (schema.options ?? []).map((option) => { + if (isProjectOption(option)) { + const projects = Object.keys(workspace.workspace.projects); + option.items = projects.sort(); + } + return option; + }), + }; +}; diff --git a/libs/shared/nx-console-plugins/src/lib/internal-plugins/index.ts b/libs/shared/nx-console-plugins/src/lib/internal-plugins/index.ts index 3d937f86b9..c620221e5a 100644 --- a/libs/shared/nx-console-plugins/src/lib/internal-plugins/index.ts +++ b/libs/shared/nx-console-plugins/src/lib/internal-plugins/index.ts @@ -1,4 +1,5 @@ import { NxConsolePluginsDefinition } from '../nx-console-plugin-types'; +import { addProjectItemsToOptionProcessor } from './add-project-items-to-option-processor'; import { filterInternalAndDeprecatedProcessor } from './filter-internal-and-deprecated-processor'; import { gitCleanMessageFactory } from './git-clean-message-factory'; import { @@ -17,6 +18,7 @@ export const internalPlugins: NxConsolePluginsDefinition = { filterInternalAndDeprecatedProcessor, prefillProjectAndDirProcessor, nameAndDirectoryProcessor, + addProjectItemsToOptionProcessor, ], validators: [], startupMessageFactories: [ diff --git a/libs/vscode/generate-ui-webview/src/lib/init-generate-ui-webview.ts b/libs/vscode/generate-ui-webview/src/lib/init-generate-ui-webview.ts index b36448eb35..d320bc6e18 100644 --- a/libs/vscode/generate-ui-webview/src/lib/init-generate-ui-webview.ts +++ b/libs/vscode/generate-ui-webview/src/lib/init-generate-ui-webview.ts @@ -36,23 +36,8 @@ export async function openGenerateUi( }; } - generateUIWebview.openGenerateUi( - await augmentGeneratorSchema({ - ...generator, - context: generatorContext, - }) - ); -} - -async function augmentGeneratorSchema( - generatorSchema: GeneratorSchema -): Promise { - for (const option of generatorSchema.options) { - if (isProjectOption(option)) { - const projects = Object.entries(await getNxWorkspaceProjects()); - option.items = projects.map((entry) => entry[0]).sort(); - } - } - - return generatorSchema; + generateUIWebview.openGenerateUi({ + ...generator, + context: generatorContext, + }); }