From 184846cfcc1712cfa680cc0ea5d35ac71c67198e Mon Sep 17 00:00:00 2001 From: Milton Hultgren Date: Mon, 25 Mar 2024 16:49:36 +0100 Subject: [PATCH] [Obs AI Assistant] Show error toast on failure (#179335) If the call to `ObservabilityAIAssistantAppService.start` fails, show an error toast to notify the user. Screenshot 2024-03-25 at 12 23 46 --- .../public/components/nav_control/index.tsx | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx index 2210f50d7a6b7..074a13815dd0c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx @@ -10,6 +10,7 @@ import { EuiButton } from '@elastic/eui'; import { css } from '@emotion/react'; import { v4 } from 'uuid'; import useObservable from 'react-use/lib/useObservable'; +import { i18n } from '@kbn/i18n'; import { useObservabilityAIAssistantAppService } from '../../hooks/use_observability_ai_assistant_app_service'; import { ChatFlyout } from '../chat/chat_flyout'; import { useKibana } from '../../hooks/use_kibana'; @@ -22,6 +23,7 @@ export function NavControl({}: {}) { const { services: { + notifications, plugins: { start: { observabilityAIAssistant: { ObservabilityAIAssistantChatServiceContext }, @@ -36,7 +38,23 @@ export function NavControl({}: {}) { const chatService = useAbortableAsync( ({ signal }) => { - return hasBeenOpened ? service.start({ signal }) : undefined; + return hasBeenOpened + ? service.start({ signal }).catch((error) => { + notifications.toasts.addError(error, { + title: i18n.translate( + 'xpack.observabilityAiAssistant.navControl.initFailureErrorTitle', + { + defaultMessage: 'Failed to initialize Observability AI Assistant', + } + ), + }); + + setHasBeenOpened(false); + setIsOpen(false); + + throw error; + }) + : undefined; }, [service, hasBeenOpened] );