From 5c782900e3ab95a3e79db61b39fc6a991274c991 Mon Sep 17 00:00:00 2001 From: bnechyporenko Date: Wed, 6 Jul 2022 13:16:49 +0200 Subject: [PATCH] Incorporated the feedback. Signed-off-by: bnechyporenko --- .../src/plugin-options/usePluginOptions.test.tsx | 12 ++++++------ packages/core-plugin-api/src/plugin/Plugin.tsx | 10 ++++++---- packages/core-plugin-api/src/plugin/types.ts | 1 - 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/core-plugin-api/src/plugin-options/usePluginOptions.test.tsx b/packages/core-plugin-api/src/plugin-options/usePluginOptions.test.tsx index 268e191cec..f9f1b6c67e 100644 --- a/packages/core-plugin-api/src/plugin-options/usePluginOptions.test.tsx +++ b/packages/core-plugin-api/src/plugin-options/usePluginOptions.test.tsx @@ -17,13 +17,15 @@ import React from 'react'; import { renderHook } from '@testing-library/react-hooks'; import { usePluginOptions, PluginProvider } from './usePluginOptions'; -import { createPlugin, PluginOptions } from '../plugin'; +import { createPlugin, PluginInputOptions, PluginOptions } from '../plugin'; describe('usePluginOptions', () => { it('should provide a versioned value to hook', () => { const plugin = createPlugin({ id: 'my-plugin', - options: { 'key-1': 'value-1', 'key-2': 'value-2' }, + __experimentalConfigure(_: PluginInputOptions): PluginOptions { + return { 'key-1': 'value-1', 'key-2': 'value-2' }; + }, }); const rendered = renderHook(() => usePluginOptions(), { @@ -32,11 +34,9 @@ describe('usePluginOptions', () => { ), }); - const config = rendered.result.current.config as unknown as { - options: PluginOptions; - }; + const config = rendered.result.current; - expect(config.options).toEqual({ + expect(config).toEqual({ 'key-1': 'value-1', 'key-2': 'value-2', }); diff --git a/packages/core-plugin-api/src/plugin/Plugin.tsx b/packages/core-plugin-api/src/plugin/Plugin.tsx index a99885cfe8..e78b6be01e 100644 --- a/packages/core-plugin-api/src/plugin/Plugin.tsx +++ b/packages/core-plugin-api/src/plugin/Plugin.tsx @@ -36,6 +36,8 @@ export class PluginImpl< { constructor(private readonly config: PluginConfig) {} + options: PluginOptions | undefined = undefined; + getId(): string { return this.config.id; } @@ -62,15 +64,15 @@ export class PluginImpl< __experimentalReconfigure(options: PluginInputOptions): void { if (this.config.__experimentalConfigure) { - this.config.options = this.config.__experimentalConfigure(options); + this.options = this.config.__experimentalConfigure(options); } } getPluginOptions(): PluginOptions { - if (this.config.__experimentalConfigure && !this.config.options) { - this.config.options = this.config.__experimentalConfigure(); + if (this.config.__experimentalConfigure && !this.options) { + this.options = this.config.__experimentalConfigure(); } - return this.config.options ?? ({} as PluginOptions); + return this.options ?? ({} as PluginOptions); } toString() { diff --git a/packages/core-plugin-api/src/plugin/types.ts b/packages/core-plugin-api/src/plugin/types.ts index 4dbb9e0e41..5daaa3e9f9 100644 --- a/packages/core-plugin-api/src/plugin/types.ts +++ b/packages/core-plugin-api/src/plugin/types.ts @@ -97,7 +97,6 @@ export type PluginConfig< routes?: Routes; externalRoutes?: ExternalRoutes; featureFlags?: PluginFeatureFlagConfig[]; - options?: PluginOptions; __experimentalConfigure?(options?: PluginInputOptions): PluginOptions; };