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 (