diff --git a/.storybook/snapshots/__snapshots__/filtersearch--dropdown-unsectioned.png b/.storybook/snapshots/__snapshots__/filtersearch--dropdown-unsectioned.png index 6f2569d9..0f4e8c3f 100644 Binary files a/.storybook/snapshots/__snapshots__/filtersearch--dropdown-unsectioned.png and b/.storybook/snapshots/__snapshots__/filtersearch--dropdown-unsectioned.png differ diff --git a/package-lock.json b/package-lock.json index 2a333d93..75068ae1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-ui-react", - "version": "1.9.3", + "version": "1.9.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@yext/search-ui-react", - "version": "1.9.3", + "version": "1.9.4", "license": "BSD-3-Clause", "dependencies": { "@restart/ui": "^1.0.1", diff --git a/package.json b/package.json index 58c2fdc9..1397913f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-ui-react", - "version": "1.9.3", + "version": "1.9.4", "description": "A library of React Components for powering Yext Search integrations", "author": "watson@yext.com", "license": "BSD-3-Clause", diff --git a/src/components/GenerativeDirectAnswer.tsx b/src/components/GenerativeDirectAnswer.tsx index 1185dd56..8f6069fe 100644 --- a/src/components/GenerativeDirectAnswer.tsx +++ b/src/components/GenerativeDirectAnswer.tsx @@ -11,7 +11,7 @@ import { useCardAnalytics } from '../hooks/useCardAnalytics'; import { DefaultRawDataType } from '../models/index'; import { executeGenerativeDirectAnswer } from '../utils/search-operations'; import { Markdown, MarkdownCssClasses } from './Markdown'; -import React, { useMemo } from 'react'; +import React, {useMemo, useRef} from 'react'; /** * The CSS class interface used for {@link GenerativeDirectAnswer}. @@ -92,16 +92,18 @@ export function GenerativeDirectAnswer({ } }, [isUniversal, universalResults, verticalResults]); + const lastExecutedSearchResults = useRef(undefined as Result[] | undefined); const searchActions = useSearchActions(); const gdaResponse = useSearchState(state => state.generativeDirectAnswer?.response); const isLoading = useSearchState(state => state.generativeDirectAnswer?.isLoading); const handleClickEvent = useReportClickEvent(); React.useEffect(() => { - if (!searchResults?.length || !searchId) { + if (!searchResults?.length || !searchId || searchResults === lastExecutedSearchResults.current) { return; } executeGenerativeDirectAnswer(searchActions); + lastExecutedSearchResults.current = searchResults; }, [searchResults, searchId]); if (!searchResults?.length || isLoading || !gdaResponse || gdaResponse.resultStatus !== 'SUCCESS') { @@ -152,7 +154,7 @@ function Answer(props: AnswerProps) { }), [cssClasses.answerText] ); - + return <>
{answerHeader ?? t('aiGeneratedAnswer')}