diff --git a/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.test.ts b/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.test.ts index e7e311902d08..af009217ed99 100644 --- a/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.test.ts +++ b/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.test.ts @@ -42,7 +42,7 @@ describe('AlertNavigationRegistry', () => { test('returns true for registered consumer & alert types handlers', () => { const registry = new AlertNavigationRegistry(); const alertType = mockAlertType('index_threshold'); - registry.register('siem', alertType, handler); + registry.register('siem', alertType.id, handler); expect(registry.has('siem', alertType)).toEqual(true); }); @@ -72,7 +72,7 @@ describe('AlertNavigationRegistry', () => { test('registers a handler by consumer & Alert Type', () => { const registry = new AlertNavigationRegistry(); const alertType = mockAlertType('index_threshold'); - registry.register('siem', alertType, handler); + registry.register('siem', alertType.id, handler); expect(registry.has('siem', alertType)).toEqual(true); }); @@ -80,11 +80,11 @@ describe('AlertNavigationRegistry', () => { const registry = new AlertNavigationRegistry(); const indexThresholdAlertType = mockAlertType('index_threshold'); - registry.register('siem', indexThresholdAlertType, handler); + registry.register('siem', indexThresholdAlertType.id, handler); expect(registry.has('siem', indexThresholdAlertType)).toEqual(true); const geoAlertType = mockAlertType('geogrid'); - registry.register('siem', geoAlertType, handler); + registry.register('siem', geoAlertType.id, handler); expect(registry.has('siem', geoAlertType)).toEqual(true); }); @@ -92,19 +92,19 @@ describe('AlertNavigationRegistry', () => { const registry = new AlertNavigationRegistry(); const indexThresholdAlertType = mockAlertType('geogrid'); - registry.register('siem', indexThresholdAlertType, handler); + registry.register('siem', indexThresholdAlertType.id, handler); expect(registry.has('siem', indexThresholdAlertType)).toEqual(true); - registry.register('apm', indexThresholdAlertType, handler); + registry.register('apm', indexThresholdAlertType.id, handler); expect(registry.has('apm', indexThresholdAlertType)).toEqual(true); }); test('throws if an existing handler is registered', () => { const registry = new AlertNavigationRegistry(); const alertType = mockAlertType('index_threshold'); - registry.register('siem', alertType, handler); + registry.register('siem', alertType.id, handler); expect(() => { - registry.register('siem', alertType, handler); + registry.register('siem', alertType.id, handler); }).toThrowErrorMatchingInlineSnapshot( `"Navigation for Alert type \\"index_threshold\\" within \\"siem\\" is already registered."` ); @@ -125,7 +125,7 @@ describe('AlertNavigationRegistry', () => { expect(registry.hasDefaultHandler('siem')).toEqual(true); const geoAlertType = mockAlertType('geogrid'); - registry.register('siem', geoAlertType, handler); + registry.register('siem', geoAlertType.id, handler); expect(registry.has('siem', geoAlertType)).toEqual(true); }); @@ -149,7 +149,7 @@ describe('AlertNavigationRegistry', () => { } const indexThresholdAlertType = mockAlertType('indexThreshold'); - registry.register('siem', indexThresholdAlertType, indexThresholdHandler); + registry.register('siem', indexThresholdAlertType.id, indexThresholdHandler); expect(registry.get('siem', indexThresholdAlertType)).toEqual(indexThresholdHandler); }); @@ -167,7 +167,7 @@ describe('AlertNavigationRegistry', () => { test('returns default handlers by consumer when there are other alert type handler', () => { const registry = new AlertNavigationRegistry(); - registry.register('siem', mockAlertType('indexThreshold'), () => ({})); + registry.register('siem', mockAlertType('indexThreshold').id, () => ({})); function defaultHandler(alert: SanitizedAlert) { return {}; diff --git a/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.ts b/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.ts index 65b7c1e68e43..0c7bf052fef4 100644 --- a/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.ts +++ b/x-pack/plugins/alerting/public/alert_navigation_registry/alert_navigation_registry.ts @@ -15,11 +15,11 @@ export class AlertNavigationRegistry { new Map(); public has(consumer: string, alertType: AlertType) { - return this.hasTypedHandler(consumer, alertType) || this.hasDefaultHandler(consumer); + return this.hasTypedHandler(consumer, alertType.id) || this.hasDefaultHandler(consumer); } - public hasTypedHandler(consumer: string, alertType: AlertType) { - return this.alertNavigations.get(consumer)?.has(alertType.id) ?? false; + public hasTypedHandler(consumer: string, ruleTypeId: string) { + return this.alertNavigations.get(consumer)?.has(ruleTypeId) ?? false; } public hasDefaultHandler(consumer: string) { @@ -50,14 +50,14 @@ export class AlertNavigationRegistry { consumerNavigations.set(DEFAULT_HANDLER, handler); } - public register(consumer: string, alertType: AlertType, handler: AlertNavigationHandler) { - if (this.hasTypedHandler(consumer, alertType)) { + public register(consumer: string, ruleTypeId: string, handler: AlertNavigationHandler) { + if (this.hasTypedHandler(consumer, ruleTypeId)) { throw new Error( i18n.translate('xpack.alerting.alertNavigationRegistry.register.duplicateNavigationError', { defaultMessage: 'Navigation for Alert type "{alertType}" within "{consumer}" is already registered.', values: { - alertType: alertType.id, + alertType: ruleTypeId, consumer, }, }) @@ -67,7 +67,7 @@ export class AlertNavigationRegistry { const consumerNavigations = this.alertNavigations.get(consumer) ?? this.createConsumerNavigation(consumer); - consumerNavigations.set(alertType.id, handler); + consumerNavigations.set(ruleTypeId, handler); } public get(consumer: string, alertType: AlertType): AlertNavigationHandler { diff --git a/x-pack/plugins/alerting/public/plugin.ts b/x-pack/plugins/alerting/public/plugin.ts index be7080f5df6d..71fb0c7fe32b 100644 --- a/x-pack/plugins/alerting/public/plugin.ts +++ b/x-pack/plugins/alerting/public/plugin.ts @@ -59,15 +59,7 @@ export class AlertingPublicPlugin implements Plugin { - const alertType = await loadAlertType({ http: core.http, id: ruleTypeId }); - if (!alertType) { - // eslint-disable-next-line no-console - console.log( - `Unable to register navigation for rule type "${ruleTypeId}" because it is not registered on the server side.` - ); - return; - } - this.alertNavigationRegistry!.register(applicationId, alertType, handler); + this.alertNavigationRegistry!.register(applicationId, ruleTypeId, handler); }; const registerDefaultNavigation = async (