From 3a29b3b959b694fab010cbd1d666e0d81a165a0f Mon Sep 17 00:00:00 2001 From: Vadim Dalecky Date: Tue, 17 Nov 2020 15:28:39 +0100 Subject: [PATCH] Clean up UI Actions Enhanced server plugin (#83442) (#83515) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 🤖 remove unused code * refactor: 💡 don't pass plugin definition to a function * perf: ⚡️ fetch factory from registry only once --- .../server/dynamic_action_enhancement.ts | 22 ++++---- .../ui_actions_enhanced/server/plugin.ts | 54 ++----------------- 2 files changed, 14 insertions(+), 62 deletions(-) diff --git a/x-pack/plugins/ui_actions_enhanced/server/dynamic_action_enhancement.ts b/x-pack/plugins/ui_actions_enhanced/server/dynamic_action_enhancement.ts index ade78c31211ab2..4cea7ddf4854ae 100644 --- a/x-pack/plugins/ui_actions_enhanced/server/dynamic_action_enhancement.ts +++ b/x-pack/plugins/ui_actions_enhanced/server/dynamic_action_enhancement.ts @@ -6,23 +6,19 @@ import { EnhancementRegistryDefinition } from '../../../../src/plugins/embeddable/server'; import { SavedObjectReference } from '../../../../src/core/types'; -import { DynamicActionsState, SerializedEvent } from './types'; -import { AdvancedUiActionsServerPlugin } from './plugin'; +import { ActionFactory, DynamicActionsState, SerializedEvent } from './types'; import { SerializableState } from '../../../../src/plugins/kibana_utils/common'; export const dynamicActionEnhancement = ( - uiActionsEnhanced: AdvancedUiActionsServerPlugin + getActionFactory: (id: string) => undefined | ActionFactory ): EnhancementRegistryDefinition => { return { id: 'dynamicActions', telemetry: (state: SerializableState, telemetry: Record) => { let telemetryData = telemetry; (state as DynamicActionsState).events.forEach((event: SerializedEvent) => { - if (uiActionsEnhanced.getActionFactory(event.action.factoryId)) { - telemetryData = uiActionsEnhanced - .getActionFactory(event.action.factoryId)! - .telemetry(event, telemetryData); - } + const factory = getActionFactory(event.action.factoryId); + if (factory) telemetryData = factory.telemetry(event, telemetryData); }); return telemetryData; }, @@ -30,8 +26,9 @@ export const dynamicActionEnhancement = ( const references: SavedObjectReference[] = []; const newState: DynamicActionsState = { events: (state as DynamicActionsState).events.map((event: SerializedEvent) => { - const result = uiActionsEnhanced.getActionFactory(event.action.factoryId) - ? uiActionsEnhanced.getActionFactory(event.action.factoryId)!.extract(event) + const factory = getActionFactory(event.action.factoryId); + const result = factory + ? factory.extract(event) : { state: event, references: [], @@ -45,9 +42,8 @@ export const dynamicActionEnhancement = ( inject: (state: SerializableState, references: SavedObjectReference[]) => { return { events: (state as DynamicActionsState).events.map((event: SerializedEvent) => { - return uiActionsEnhanced.getActionFactory(event.action.factoryId) - ? uiActionsEnhanced.getActionFactory(event.action.factoryId)!.inject(event, references) - : event; + const factory = getActionFactory(event.action.factoryId); + return factory ? factory.inject(event, references) : event; }), } as DynamicActionsState; }, diff --git a/x-pack/plugins/ui_actions_enhanced/server/plugin.ts b/x-pack/plugins/ui_actions_enhanced/server/plugin.ts index 718304018730de..e6362418efc66c 100644 --- a/x-pack/plugins/ui_actions_enhanced/server/plugin.ts +++ b/x-pack/plugins/ui_actions_enhanced/server/plugin.ts @@ -5,15 +5,10 @@ */ import { identity } from 'lodash'; -import { CoreSetup, Plugin, SavedObjectReference } from '../../../../src/core/server'; +import { CoreSetup, Plugin } from '../../../../src/core/server'; import { EmbeddableSetup } from '../../../../src/plugins/embeddable/server'; import { dynamicActionEnhancement } from './dynamic_action_enhancement'; -import { - ActionFactoryRegistry, - SerializedEvent, - ActionFactoryDefinition, - DynamicActionsState, -} from './types'; +import { ActionFactoryRegistry, SerializedEvent, ActionFactoryDefinition } from './types'; export interface SetupContract { registerActionFactory: (definition: ActionFactoryDefinition) => void; @@ -32,7 +27,9 @@ export class AdvancedUiActionsServerPlugin constructor() {} public setup(core: CoreSetup, { embeddable }: SetupDependencies) { - embeddable.registerEnhancement(dynamicActionEnhancement(this)); + const getActionFactory = (actionFactoryId: string) => this.actionFactories.get(actionFactoryId); + + embeddable.registerEnhancement(dynamicActionEnhancement(getActionFactory)); return { registerActionFactory: this.registerActionFactory, @@ -64,45 +61,4 @@ export class AdvancedUiActionsServerPlugin migrations: definition.migrations || {}, }); }; - - public readonly getActionFactory = (actionFactoryId: string) => { - const actionFactory = this.actionFactories.get(actionFactoryId); - return actionFactory; - }; - - public readonly telemetry = (state: DynamicActionsState, telemetry: Record = {}) => { - state.events.forEach((event: SerializedEvent) => { - if (this.actionFactories.has(event.action.factoryId)) { - this.actionFactories.get(event.action.factoryId)!.telemetry(event, telemetry); - } - }); - return telemetry; - }; - - public readonly extract = (state: DynamicActionsState) => { - const references: SavedObjectReference[] = []; - const newState = { - events: state.events.map((event: SerializedEvent) => { - const result = this.actionFactories.has(event.action.factoryId) - ? this.actionFactories.get(event.action.factoryId)!.extract(event) - : { - state: event, - references: [], - }; - result.references.forEach((r) => references.push(r)); - return result.state; - }), - }; - return { state: newState, references }; - }; - - public readonly inject = (state: DynamicActionsState, references: SavedObjectReference[]) => { - return { - events: state.events.map((event: SerializedEvent) => { - return this.actionFactories.has(event.action.factoryId) - ? this.actionFactories.get(event.action.factoryId)!.inject(event, references) - : event; - }), - }; - }; }