From 0f258731db488582f244cb93d8ded2412b4bdb21 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 28 Oct 2025 18:46:07 +0100 Subject: [PATCH] ReplaceGoogleSearch: add option to replace engine with single option (#3737) Co-authored-by: Vendicated --- src/plugins/replaceGoogleSearch/index.tsx | 42 ++++++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/src/plugins/replaceGoogleSearch/index.tsx b/src/plugins/replaceGoogleSearch/index.tsx index 47952610f..bfa9b1768 100644 --- a/src/plugins/replaceGoogleSearch/index.tsx +++ b/src/plugins/replaceGoogleSearch/index.tsx @@ -22,6 +22,11 @@ const DefaultEngines = { Wikipedia: "https://wikipedia.org/w/index.php?search=", } as const; +const enum ReplacementEngineValue { + OFF = "off", + CUSTOM = "custom", +} + const settings = definePluginSettings({ customEngineName: { description: "Name of the custom search engine", @@ -32,6 +37,15 @@ const settings = definePluginSettings({ description: "The URL of your Engine", type: OptionType.STRING, placeholder: "https://google.com/search?q=" + }, + replacementEngine: { + description: "Replace with a specific search engine instead of adding a menu", + type: OptionType.SELECT, + options: [ + { label: "Off", value: ReplacementEngineValue.OFF, default: true }, + { label: "Custom Engine", value: ReplacementEngineValue.CUSTOM }, + ...Object.keys(DefaultEngines).map(engine => ({ label: engine, value: engine })) + ] } }); @@ -40,13 +54,31 @@ function search(src: string, engine: string) { } function makeSearchItem(src: string) { - let Engines = {}; + const { customEngineName, customEngineURL, replacementEngine } = settings.store; - if (settings.store.customEngineName && settings.store.customEngineURL) { - Engines[settings.store.customEngineName] = settings.store.customEngineURL; + const hasCustomEngine = Boolean(customEngineName && customEngineURL); + const hasValidReplacementEngine = replacementEngine !== ReplacementEngineValue.OFF && !(replacementEngine === ReplacementEngineValue.CUSTOM && !hasCustomEngine); + + const Engines = { ...DefaultEngines }; + + if (hasCustomEngine) { + Engines[customEngineName!] = customEngineURL; } - Engines = { ...Engines, ...DefaultEngines }; + if (hasValidReplacementEngine) { + const name = replacementEngine === ReplacementEngineValue.CUSTOM && hasCustomEngine + ? customEngineName + : replacementEngine; + + return ( + search(src, Engines[name!])} + /> + ); + } return (