diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx index 74976c1c61f0c..cbaa347d65732 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.test.tsx @@ -57,8 +57,7 @@ describe('EngineRouter', () => { }); it('redirects to engines list and flashes an error if the engine param was not found', () => { - (useParams as jest.Mock).mockReturnValue({ engineName: '404-engine' }); - setMockValues({ ...values, engineNotFound: true }); + setMockValues({ ...values, engineNotFound: true, engineName: '404-engine' }); const wrapper = shallow(); expect(wrapper.find(Redirect).prop('to')).toEqual('/engines'); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx index d3501a5ee7af3..ce7675cef9bb1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx @@ -69,31 +69,30 @@ export const EngineRouter: React.FC = () => { }, } = useValues(AppLogic); + const { engineName: engineNameFromUrl } = useParams() as { engineName: string }; const { engineName, dataLoading, engineNotFound } = useValues(EngineLogic); const { setEngineName, initializeEngine, clearEngine } = useActions(EngineLogic); - const { engineName: engineNameParam } = useParams() as { engineName: string }; - const engineBreadcrumb = [ENGINES_TITLE, engineNameParam]; - - const isEngineInStateStale = () => engineName !== engineNameParam; - useEffect(() => { - setEngineName(engineNameParam); + setEngineName(engineNameFromUrl); initializeEngine(); return clearEngine; - }, [engineNameParam]); + }, [engineNameFromUrl]); if (engineNotFound) { setQueuedErrorMessage( i18n.translate('xpack.enterpriseSearch.appSearch.engine.notFound', { - defaultMessage: "No engine with name '{engineNameParam}' could be found.", - values: { engineNameParam }, + defaultMessage: "No engine with name '{engineName}' could be found.", + values: { engineName }, }) ); return ; } - if (isEngineInStateStale() || dataLoading) return ; + const isLoadingNewEngine = engineName !== engineNameFromUrl; + if (isLoadingNewEngine || dataLoading) return ; + + const engineBreadcrumb = [ENGINES_TITLE, engineName]; return (