From bf4da376dcbd06aa0b5ab6dc6f71824e05d34e34 Mon Sep 17 00:00:00 2001 From: Milton Hultgren Date: Mon, 25 Mar 2024 12:21:11 +0100 Subject: [PATCH 1/4] [Obs AI Assistant] Show error toast on failure --- .../public/components/nav_control/index.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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..3a2e9864f8165 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 @@ -22,6 +22,7 @@ export function NavControl({}: {}) { const { services: { + notifications, plugins: { start: { observabilityAIAssistant: { ObservabilityAIAssistantChatServiceContext }, @@ -41,6 +42,19 @@ export function NavControl({}: {}) { [service, hasBeenOpened] ); + useEffect(() => { + if (!chatService.error) { + return; + } + + notifications.toasts.addError(chatService.error, { + title: 'Failed to initialize Observability AI Assistant', + }); + + setHasBeenOpened(false); + setIsOpen(false); + }, [chatService.error, notifications.toasts]); + const [isOpen, setIsOpen] = useState(false); const keyRef = useRef(v4()); From 60dea266b2c46093f999109c2d863654d7d205f6 Mon Sep 17 00:00:00 2001 From: Milton Hultgren Date: Mon, 25 Mar 2024 13:01:37 +0100 Subject: [PATCH 2/4] Use .catch instead of useEffect --- .../public/components/nav_control/index.tsx | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) 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 3a2e9864f8165..30e56d20c3f3c 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 @@ -37,24 +37,20 @@ 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: 'Failed to initialize Observability AI Assistant', + }); + + setHasBeenOpened(false); + setIsOpen(false); + }) + : undefined; }, [service, hasBeenOpened] ); - useEffect(() => { - if (!chatService.error) { - return; - } - - notifications.toasts.addError(chatService.error, { - title: 'Failed to initialize Observability AI Assistant', - }); - - setHasBeenOpened(false); - setIsOpen(false); - }, [chatService.error, notifications.toasts]); - const [isOpen, setIsOpen] = useState(false); const keyRef = useRef(v4()); From 25f02a71b3a7bec88a63df33dc2a313c1694de08 Mon Sep 17 00:00:00 2001 From: Milton Hultgren Date: Mon, 25 Mar 2024 13:18:24 +0100 Subject: [PATCH 3/4] Re-throw erro --- .../public/components/nav_control/index.tsx | 2 ++ 1 file changed, 2 insertions(+) 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 30e56d20c3f3c..88f5ff23b5106 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 @@ -45,6 +45,8 @@ export function NavControl({}: {}) { setHasBeenOpened(false); setIsOpen(false); + + throw error; }) : undefined; }, From 42c8a9ca382c17c92128a0e17512d5824f771ca6 Mon Sep 17 00:00:00 2001 From: Milton Hultgren Date: Mon, 25 Mar 2024 14:33:33 +0100 Subject: [PATCH 4/4] Add translation of error title --- .../public/components/nav_control/index.tsx | 8 +++++++- 1 file changed, 7 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 88f5ff23b5106..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'; @@ -40,7 +41,12 @@ export function NavControl({}: {}) { return hasBeenOpened ? service.start({ signal }).catch((error) => { notifications.toasts.addError(error, { - title: 'Failed to initialize Observability AI Assistant', + title: i18n.translate( + 'xpack.observabilityAiAssistant.navControl.initFailureErrorTitle', + { + defaultMessage: 'Failed to initialize Observability AI Assistant', + } + ), }); setHasBeenOpened(false);