diff --git a/src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/SearchOrAskAiButton.tsx b/src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/SearchOrAskAiButton.tsx index 23ab5b61c..3ca8cdc1c 100644 --- a/src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/SearchOrAskAiButton.tsx +++ b/src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/SearchOrAskAiButton.tsx @@ -13,6 +13,7 @@ import { EuiLoadingSpinner, } from '@elastic/eui' import { css } from '@emotion/react' +import { useQuery } from '@tanstack/react-query' import * as React from 'react' import { useEffect, Suspense, lazy } from 'react' @@ -29,6 +30,16 @@ export const SearchOrAskAiButton = () => { const isModalOpen = useModalIsOpen() const { openModal, closeModal, toggleModal } = useModalActions() + const { data: isApiAvailable } = useQuery({ + queryKey: ['api-health'], + queryFn: async () => { + const response = await fetch('/docs/_api/v1/', { method: 'HEAD' }) + return response.ok + }, + staleTime: 5 * 60 * 1000, // 5 minutes + retry: false, + }) + const positionCss = css` position: absolute; left: 50%; @@ -62,6 +73,10 @@ export const SearchOrAskAiButton = () => { } }, []) + if (!isApiAvailable) { + return null + } + return ( <> Results.Empty); MapAskAiEndpoint(group); MapSearchEndpoint(group); }