From 48b7a2824aff23c50f0493e2dd33e26186af5b62 Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sun, 12 Jan 2025 00:19:39 +0530 Subject: [PATCH] feat: Add option to enable internet search by default --- src/assets/locale/ar/settings.json | 3 + src/assets/locale/da/settings.json | 3 + src/assets/locale/de/settings.json | 3 + src/assets/locale/en/settings.json | 3 + src/assets/locale/es/settings.json | 3 + src/assets/locale/fa/settings.json | 3 + src/assets/locale/fr/settings.json | 3 + src/assets/locale/it/settings.json | 3 + src/assets/locale/ja-JP/settings.json | 3 + src/assets/locale/ko/settings.json | 3 + src/assets/locale/ml/settings.json | 3 + src/assets/locale/no/settings.json | 3 + src/assets/locale/pt-BR/settings.json | 3 + src/assets/locale/ru/settings.json | 3 + src/assets/locale/sv/settings.json | 3 + src/assets/locale/uk/settings.json | 3 + src/assets/locale/zh/settings.json | 3 + .../Option/Playground/PlaygroundForm.tsx | 12 +++- .../Option/Settings/search-mode.tsx | 16 ++++- src/components/Sidepanel/Chat/form.tsx | 16 ++++- src/hooks/useMessage.tsx | 11 +++- src/hooks/useMessageOption.tsx | 10 +++- src/services/search.ts | 59 ++++++++++++------- 23 files changed, 148 insertions(+), 27 deletions(-) diff --git a/src/assets/locale/ar/settings.json b/src/assets/locale/ar/settings.json index 23e964d..ac3973a 100644 --- a/src/assets/locale/ar/settings.json +++ b/src/assets/locale/ar/settings.json @@ -77,6 +77,9 @@ }, "googleDomain": { "label": "نطاق جوجل" + }, + "searchOnByDefault": { + "label": "تفعيل البحث على الإنترنت بشكل افتراضي" } }, "system": { diff --git a/src/assets/locale/da/settings.json b/src/assets/locale/da/settings.json index 7efe9eb..74a2346 100644 --- a/src/assets/locale/da/settings.json +++ b/src/assets/locale/da/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API Nøgle", "placeholder": "Indtast din Brave API nøgle" + }, + "searchOnByDefault": { + "label": "Internet Søgning TIL som standard" } }, "system": { diff --git a/src/assets/locale/de/settings.json b/src/assets/locale/de/settings.json index 9d5822b..efee952 100644 --- a/src/assets/locale/de/settings.json +++ b/src/assets/locale/de/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API-Schlüssel", "placeholder": "Geben Sie Ihren Brave API-Schlüssel ein" + }, + "searchOnByDefault": { + "label": "Internetsuche standardmäßig aktiviert" } }, "system": { diff --git a/src/assets/locale/en/settings.json b/src/assets/locale/en/settings.json index 2d7cdcd..a158d05 100644 --- a/src/assets/locale/en/settings.json +++ b/src/assets/locale/en/settings.json @@ -77,6 +77,9 @@ }, "googleDomain": { "label": "Google Domain" + }, + "searchOnByDefault": { + "label": "Internet Search ON by default" } }, "system": { diff --git a/src/assets/locale/es/settings.json b/src/assets/locale/es/settings.json index 41a24cb..1e474ab 100644 --- a/src/assets/locale/es/settings.json +++ b/src/assets/locale/es/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Clave API de Brave", "placeholder": "Ingrese su clave API de Brave" + }, + "searchOnByDefault": { + "label": "Búsqueda en Internet activada por defecto" } }, "system": { diff --git a/src/assets/locale/fa/settings.json b/src/assets/locale/fa/settings.json index 48aaf5d..8b23ebf 100644 --- a/src/assets/locale/fa/settings.json +++ b/src/assets/locale/fa/settings.json @@ -71,6 +71,9 @@ "braveApi": { "label": "کلید API بریو", "placeholder": "کلید API بریو خود را وارد کنید" + }, + "searchOnByDefault": { + "label": "جستجوی اینترنتی به صورت پیش‌فرض فعال باشد" } }, "system": { diff --git a/src/assets/locale/fr/settings.json b/src/assets/locale/fr/settings.json index dbd7fad..780ddb4 100644 --- a/src/assets/locale/fr/settings.json +++ b/src/assets/locale/fr/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Clé API Brave", "placeholder": "Entrez votre clé API Brave" + }, + "searchOnByDefault": { + "label": "Recherche Internet activée par défaut" } }, "system": { diff --git a/src/assets/locale/it/settings.json b/src/assets/locale/it/settings.json index 3b61c5c..4b0c900 100644 --- a/src/assets/locale/it/settings.json +++ b/src/assets/locale/it/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Chiave API Brave", "placeholder": "Inserisci la tua chiave API Brave" + }, + "searchOnByDefault": { + "label": "Ricerca Internet attiva per impostazione predefinita" } }, "system": { diff --git a/src/assets/locale/ja-JP/settings.json b/src/assets/locale/ja-JP/settings.json index 239ffa4..6aabff0 100644 --- a/src/assets/locale/ja-JP/settings.json +++ b/src/assets/locale/ja-JP/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "Brave APIキー", "placeholder": "Brave APIキーを入力してください" + }, + "searchOnByDefault": { + "label": "デフォルトでインターネット検索をオンにする" } }, "system": { diff --git a/src/assets/locale/ko/settings.json b/src/assets/locale/ko/settings.json index 9728e98..b652959 100644 --- a/src/assets/locale/ko/settings.json +++ b/src/assets/locale/ko/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "Brave API 키", "placeholder": "Brave API 키를 입력하세요" + }, + "searchOnByDefault": { + "label": "기본적으로 인터넷 검색 켜기" } }, "system": { diff --git a/src/assets/locale/ml/settings.json b/src/assets/locale/ml/settings.json index fab6e6f..c093da0 100644 --- a/src/assets/locale/ml/settings.json +++ b/src/assets/locale/ml/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "ബ്രേവ് API കീ", "placeholder": "നിങ്ങളുടെ ബ്രേവ് API കീ നൽകുക" + }, + "searchOnByDefault": { + "label": "സ്ഥിരസ്ഥിതിയായി ഇന്റർനെറ്റ് തിരച്ചിൽ പ്രവർത്തനക്ഷമമാക്കുക" } }, "system": { diff --git a/src/assets/locale/no/settings.json b/src/assets/locale/no/settings.json index 40dece1..16f6c59 100644 --- a/src/assets/locale/no/settings.json +++ b/src/assets/locale/no/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API Nøkkel", "placeholder": "Skriv inn din Brave API nøkkel" + }, + "searchOnByDefault": { + "label": "Internett-søk PÅ som standard" } }, "system": { diff --git a/src/assets/locale/pt-BR/settings.json b/src/assets/locale/pt-BR/settings.json index e296201..8b1423d 100644 --- a/src/assets/locale/pt-BR/settings.json +++ b/src/assets/locale/pt-BR/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Chave da API do Brave", "placeholder": "Digite sua chave da API do Brave" + }, + "searchOnByDefault": { + "label": "Pesquisa na Internet ativada por padrão" } }, "system": { diff --git a/src/assets/locale/ru/settings.json b/src/assets/locale/ru/settings.json index 1f985ae..6afd82c 100644 --- a/src/assets/locale/ru/settings.json +++ b/src/assets/locale/ru/settings.json @@ -75,6 +75,9 @@ "braveApi": { "label": "API-ключ Brave", "placeholder": "Введите ваш API-ключ Brave" + }, + "searchOnByDefault": { + "label": "Поиск в интернете включен по умолчанию" } }, "system": { diff --git a/src/assets/locale/sv/settings.json b/src/assets/locale/sv/settings.json index aa049c6..bc10a22 100644 --- a/src/assets/locale/sv/settings.json +++ b/src/assets/locale/sv/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Brave API-nyckel", "placeholder": "Ange din Brave API-nyckel" + }, + "searchOnByDefault": { + "label": "Internetsökning PÅ som standard" } }, "system": { diff --git a/src/assets/locale/uk/settings.json b/src/assets/locale/uk/settings.json index 34752c9..d8c8a98 100644 --- a/src/assets/locale/uk/settings.json +++ b/src/assets/locale/uk/settings.json @@ -74,6 +74,9 @@ "braveApi": { "label": "Ключ API Brave", "placeholder": "Введіть ваш ключ API Brave" + }, + "searchOnByDefault": { + "label": "Пошук в Інтернеті увімкнено за замовчуванням" } }, "system": { diff --git a/src/assets/locale/zh/settings.json b/src/assets/locale/zh/settings.json index 1a66351..e86b363 100644 --- a/src/assets/locale/zh/settings.json +++ b/src/assets/locale/zh/settings.json @@ -77,6 +77,9 @@ "braveApi": { "label": "Brave API 密钥", "placeholder": "输入您的 Brave API 密钥" + }, + "searchOnByDefault": { + "label": "默认开启网络搜索" } }, "system": { diff --git a/src/components/Option/Playground/PlaygroundForm.tsx b/src/components/Option/Playground/PlaygroundForm.tsx index c6e2b40..85a0bc6 100644 --- a/src/components/Option/Playground/PlaygroundForm.tsx +++ b/src/components/Option/Playground/PlaygroundForm.tsx @@ -39,7 +39,8 @@ export const PlaygroundForm = ({ dropedFile }: Props) => { selectedKnowledge, temporaryChat, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn } = useMessageOption() const isMobile = () => { @@ -71,8 +72,17 @@ export const PlaygroundForm = ({ dropedFile }: Props) => { React.useEffect(() => { textAreaFocus() + if (defaultInternetSearchOn) { + setWebSearch(true) + } }, []) + React.useEffect(() => { + if (defaultInternetSearchOn) { + setWebSearch(true) + } + }, [defaultInternetSearchOn]) + const onInputChange = async ( e: React.ChangeEvent | File ) => { diff --git a/src/components/Option/Settings/search-mode.tsx b/src/components/Option/Settings/search-mode.tsx index f77149c..207912a 100644 --- a/src/components/Option/Settings/search-mode.tsx +++ b/src/components/Option/Settings/search-mode.tsx @@ -19,7 +19,8 @@ export const SearchModeSettings = () => { searxngURL: "", searxngJSONMode: false, braveApiKey: "", - googleDomain: "" + googleDomain: "", + defaultInternetSearchOn: false } }) @@ -171,6 +172,19 @@ export const SearchModeSettings = () => { +
+ + {t("generalSettings.webSearch.searchOnByDefault.label")} + +
+ +
+
diff --git a/src/components/Sidepanel/Chat/form.tsx b/src/components/Sidepanel/Chat/form.tsx index 3b39164..98a2826 100644 --- a/src/components/Sidepanel/Chat/form.tsx +++ b/src/components/Sidepanel/Chat/form.tsx @@ -133,7 +133,8 @@ export const SidepanelForm = ({ dropedFile }: Props) => { setSelectedQuickPrompt, speechToTextLanguage, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn } = useMessage() React.useEffect(() => { @@ -194,12 +195,23 @@ export const SidepanelForm = ({ dropedFile }: Props) => { } textareaRef.current?.addEventListener("drop", handleDrop) textareaRef.current?.addEventListener("dragover", handleDragOver) + + if (defaultInternetSearchOn) { + setWebSearch(true) + } + return () => { textareaRef.current?.removeEventListener("drop", handleDrop) textareaRef.current?.removeEventListener("dragover", handleDragOver) } }, []) + React.useEffect(() => { + if (defaultInternetSearchOn) { + setWebSearch(true) + } + }, [defaultInternetSearchOn]) + return (
{ chatMode === "rag" ? "hidden" : "block" }`}> {webSearch ? ( - + ) : ( )} diff --git a/src/hooks/useMessage.tsx b/src/hooks/useMessage.tsx index 4bf2998..7d0efc5 100644 --- a/src/hooks/useMessage.tsx +++ b/src/hooks/useMessage.tsx @@ -55,7 +55,10 @@ export const useMessage = () => { setWebSearch, isSearchingInternet } = useStoreMessageOption() - + const [defaultInternetSearchOn, ] = useStorage( + "defaultInternetSearchOn", + false + ) const [chatWithWebsiteEmbedding] = useStorage( "chatWithWebsiteEmbedding", true @@ -107,6 +110,9 @@ export const useMessage = () => { setIsProcessing(false) setStreaming(false) currentChatModelSettings.reset() + if(defaultInternetSearchOn) { + setWebSearch(true) + } } const chatWithWebsiteMode = async ( @@ -1714,6 +1720,7 @@ export const useMessage = () => { speechToTextLanguage, setSpeechToTextLanguage, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn } } diff --git a/src/hooks/useMessageOption.tsx b/src/hooks/useMessageOption.tsx index 5fcd4d1..426d3d9 100644 --- a/src/hooks/useMessageOption.tsx +++ b/src/hooks/useMessageOption.tsx @@ -76,6 +76,10 @@ export const useMessageOption = () => { } = useStoreMessageOption() const currentChatModelSettings = useStoreChatModelSettings() const [selectedModel, setSelectedModel] = useStorage("selectedModel") + const [defaultInternetSearchOn, ] = useStorage( + "defaultInternetSearchOn", + false + ) const [speechToTextLanguage, setSpeechToTextLanguage] = useStorage( "speechToTextLanguage", "en-US" @@ -98,6 +102,9 @@ export const useMessageOption = () => { setStreaming(false) currentChatModelSettings.reset() textareaRef?.current?.focus() + if(defaultInternetSearchOn) { + setWebSearch(true) + } } const searchChatMode = async ( @@ -1198,6 +1205,7 @@ export const useMessageOption = () => { temporaryChat, setTemporaryChat, useOCR, - setUseOCR + setUseOCR, + defaultInternetSearchOn, } } diff --git a/src/services/search.ts b/src/services/search.ts index 447d2b2..deecc73 100644 --- a/src/services/search.ts +++ b/src/services/search.ts @@ -26,7 +26,6 @@ export const getIsVisitSpecificWebsite = async () => { return isVisitSpecificWebsite === "true" } - export const setIsVisitSpecificWebsite = async ( isVisitSpecificWebsite: boolean ) => { @@ -101,23 +100,39 @@ export const setGoogleDomain = async (domain: string) => { await storage2.set("searchGoogleDomain", domain) } +export const getInternetSearchOn = async () => { + const defaultInternetSearchOn = await storage.get( + "defaultInternetSearchOn" + ) + return defaultInternetSearchOn ?? false +} + +export const setInternetSearchOn = async (defaultInternetSearchOn: boolean) => { + await storage.set("defaultInternetSearchOn", defaultInternetSearchOn) +} + export const getSearchSettings = async () => { - const [isSimpleInternetSearch, searchProvider, totalSearchResult, visitSpecificWebsite, + const [ + isSimpleInternetSearch, + searchProvider, + totalSearchResult, + visitSpecificWebsite, searxngURL, searxngJSONMode, braveApiKey, - googleDomain - ] = - await Promise.all([ - getIsSimpleInternetSearch(), - getSearchProvider(), - totalSearchResults(), - getIsVisitSpecificWebsite(), - getSearxngURL(), - isSearxngJSONMode(), - getBraveApiKey(), - getGoogleDomain() - ]) + googleDomain, + defaultInternetSearchOn + ] = await Promise.all([ + getIsSimpleInternetSearch(), + getSearchProvider(), + totalSearchResults(), + getIsVisitSpecificWebsite(), + getSearxngURL(), + isSearxngJSONMode(), + getBraveApiKey(), + getGoogleDomain(), + getInternetSearchOn() + ]) return { isSimpleInternetSearch, @@ -127,7 +142,8 @@ export const getSearchSettings = async () => { searxngURL, searxngJSONMode, braveApiKey, - googleDomain + googleDomain, + defaultInternetSearchOn } } @@ -139,16 +155,18 @@ export const setSearchSettings = async ({ searxngJSONMode, searxngURL, braveApiKey, - googleDomain + googleDomain, + defaultInternetSearchOn }: { isSimpleInternetSearch: boolean searchProvider: string totalSearchResults: number visitSpecificWebsite: boolean searxngURL: string - searxngJSONMode: boolean, - braveApiKey: string, - googleDomain: string + searxngJSONMode: boolean + braveApiKey: string + googleDomain: string, + defaultInternetSearchOn: boolean }) => { await Promise.all([ setIsSimpleInternetSearch(isSimpleInternetSearch), @@ -158,6 +176,7 @@ export const setSearchSettings = async ({ setSearxngJSONMode(searxngJSONMode), setSearxngURL(searxngURL), setBraveApiKey(braveApiKey), - setGoogleDomain(googleDomain) + setGoogleDomain(googleDomain), + setInternetSearchOn(defaultInternetSearchOn) ]) }