diff --git a/docs/content.en/docs/release-notes/_index.md b/docs/content.en/docs/release-notes/_index.md index 0b2d808e..3921eca5 100644 --- a/docs/content.en/docs/release-notes/_index.md +++ b/docs/content.en/docs/release-notes/_index.md @@ -17,6 +17,7 @@ Information about release notes of Coco Server is provided here. - feat: add key monitoring during reset #615 - feat: calculator extension add description #623 - feat: support right-click actions after text selection #624 +- feat: add ai overview minimum number of search results configuration #625 ### 🐛 Bug fix diff --git a/src/components/Settings/Extensions/components/Details/AiOverview/index.tsx b/src/components/Settings/Extensions/components/Details/AiOverview/index.tsx index f3ea4577..63d45e9f 100644 --- a/src/components/Settings/Extensions/components/Details/AiOverview/index.tsx +++ b/src/components/Settings/Extensions/components/Details/AiOverview/index.tsx @@ -27,6 +27,12 @@ const AiOverview = () => { const setAiOverviewDelay = useExtensionsStore((state) => { return state.setAiOverviewDelay; }); + const aiOverviewMinQuantity = useExtensionsStore((state) => { + return state.aiOverviewMinQuantity; + }); + const setAiOverviewMinQuantity = useExtensionsStore((state) => { + return state.setAiOverviewMinQuantity; + }); const inputList = [ { @@ -39,6 +45,11 @@ const AiOverview = () => { value: aiOverviewDelay, onChange: setAiOverviewDelay, }, + { + label: "Minimum Number of Search Results", + value: aiOverviewMinQuantity, + onChange: setAiOverviewMinQuantity, + }, ]; return ( diff --git a/src/hooks/useSearch.ts b/src/hooks/useSearch.ts index bdae9802..030104fe 100644 --- a/src/hooks/useSearch.ts +++ b/src/hooks/useSearch.ts @@ -47,6 +47,9 @@ export function useSearch() { const aiOverviewDelay = useExtensionsStore((state) => { return state.aiOverviewDelay; }); + const aiOverviewMinQuantity = useExtensionsStore((state) => { + return state.aiOverviewMinQuantity; + }); const { querySourceTimeout } = useConnectStore(); @@ -106,7 +109,7 @@ export function useSearch() { enabledAiOverview && aiOverviewServer && aiOverviewAssistant && - filteredData.length > 5 && + filteredData.length >= aiOverviewMinQuantity && !disabledExtensions.includes("AIOverview") ) { timerRef.current = setTimeout(() => { @@ -210,6 +213,7 @@ export function useSearch() { disabledExtensions, aiOverviewCharLen, aiOverviewDelay, + aiOverviewMinQuantity, ] ); diff --git a/src/hooks/useSyncStore.ts b/src/hooks/useSyncStore.ts index de230d53..99cadba6 100644 --- a/src/hooks/useSyncStore.ts +++ b/src/hooks/useSyncStore.ts @@ -109,6 +109,9 @@ export const useSyncStore = () => { return state.setAiOverviewDelay; }); const setAiOverview = useShortcutsStore((state) => state.setAiOverview); + const setAiOverviewMinQuantity = useExtensionsStore((state) => { + return state.setAiOverviewMinQuantity; + }); useEffect(() => { if (!resetFixedWindow) { @@ -201,6 +204,7 @@ export const useSyncStore = () => { disabledExtensions, aiOverviewCharLen, aiOverviewDelay, + aiOverviewMinQuantity, } = payload; setQuickAiAccessServer(quickAiAccessServer); @@ -210,6 +214,7 @@ export const useSyncStore = () => { setDisabledExtensions(disabledExtensions); setAiOverviewCharLen(aiOverviewCharLen); setAiOverviewDelay(aiOverviewDelay); + setAiOverviewMinQuantity(aiOverviewMinQuantity); }), ]); diff --git a/src/stores/extensionsStore.ts b/src/stores/extensionsStore.ts index e80c30c3..4b10c9ee 100644 --- a/src/stores/extensionsStore.ts +++ b/src/stores/extensionsStore.ts @@ -17,6 +17,8 @@ export type IExtensionsStore = { setAiOverviewCharLen: (aiOverviewCharLen: number) => void; aiOverviewDelay: number; setAiOverviewDelay: (aiOverviewDelay: number) => void; + aiOverviewMinQuantity: number; + setAiOverviewMinQuantity: (aiOverviewMinQuantity: number) => void; }; export const useExtensionsStore = create()( @@ -47,6 +49,10 @@ export const useExtensionsStore = create()( setAiOverviewDelay(aiOverviewDelay) { return set({ aiOverviewDelay }); }, + aiOverviewMinQuantity: 5, + setAiOverviewMinQuantity(aiOverviewMinQuantity) { + return set({ aiOverviewMinQuantity }); + }, }), { name: "extensions-store", @@ -57,6 +63,7 @@ export const useExtensionsStore = create()( aiOverviewAssistant: state.aiOverviewAssistant, aiOverviewCharLen: state.aiOverviewCharLen, aiOverviewDelay: state.aiOverviewDelay, + aiOverviewMinQuantity: state.aiOverviewMinQuantity, }), } )