From 5c740649c44c369bc1950b8e75e1d5e94156d9c4 Mon Sep 17 00:00:00 2001 From: Matthias Guillitte <56800521+Ninluc@users.noreply.github.com> Date: Wed, 24 Jul 2024 13:46:38 +0200 Subject: [PATCH] Added Ecosia search engine integration (#71) --- README.md | 2 +- src/pages/content/index.tsx | 3 ++- .../searchingEngines/searchingEngines.ts | 22 +++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7d2fe7e..0368fd4 100755 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Logseq Copilot is a Chrome extension that allows you to access your Logseq using ## Features -- 🔍 Show Logseq content when you search on popular search engines via your keywords. Now support Google, Bing, Baidu, Yandex, DuckDuckGo, SearX. +- 🔍 Show Logseq content when you search on popular search engines via your keywords. Now support Google, Bing, Ecosia, Baidu, Yandex, DuckDuckGo, SearX. ## Support
diff --git a/src/pages/content/index.tsx b/src/pages/content/index.tsx index 5246e5b..caf819c 100644 --- a/src/pages/content/index.tsx +++ b/src/pages/content/index.tsx @@ -7,6 +7,7 @@ import mountQuickCapture from './QuickCapture'; import searchEngines, { Baidu, Bing, + Ecosia, DuckDuckGo, Google, SearX, @@ -24,7 +25,7 @@ const mount = async (container: Element, query: string) => { }; async function run( - searchEngine: Google | Bing | DuckDuckGo | Yandex | SearX | Baidu, + searchEngine: Google | Bing | Ecosia | DuckDuckGo | Yandex | SearX | Baidu, ) { console.debug('Logseq copliot', window.location.hostname); diff --git a/src/pages/content/searchingEngines/searchingEngines.ts b/src/pages/content/searchingEngines/searchingEngines.ts index 9cd4f8f..d74f284 100644 --- a/src/pages/content/searchingEngines/searchingEngines.ts +++ b/src/pages/content/searchingEngines/searchingEngines.ts @@ -45,6 +45,27 @@ export class Google extends SearchingEngine { } } +export class Ecosia extends SearchingEngine { + isMatch(): boolean { + const match = window.location.hostname.match(/ecosia\.org$/g); + return !!match; + } + + getQuery(): string | null { + const searchURL = new URL(window.location.href); + const query = searchURL.searchParams.get('q'); + return query; + } + + gotElement(): Element { + const container = document.createElement('article'); + const asideElement = document.querySelector('.sidebar .web__sidebar'); + asideElement!.insertBefore(container, asideElement!.firstChild); + + return container; + } +} + export class Bing extends SearchingEngine { isMatch(): boolean { const match = window.location.hostname.match(/bing(\.com)?(\.\w{2})?$/g); @@ -232,6 +253,7 @@ export class Startpage extends SearchingEngine { const searchEngins = [ new Google(), + new Ecosia(), new Bing(), new DuckDuckGo(), new Yandex(),