From 262d9f7d44f24b938349093e5ada3d00010286c0 Mon Sep 17 00:00:00 2001 From: Flo2410 Date: Fri, 26 Jan 2024 23:16:19 +0000 Subject: [PATCH] Added support for the *custom* search provider. --- src/components/quicklaunch.jsx | 2 +- src/pages/api/searchSuggestion.js | 9 +++++++++ src/pages/index.jsx | 5 +++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/components/quicklaunch.jsx b/src/components/quicklaunch.jsx index 60fba902..e2e07064 100644 --- a/src/components/quicklaunch.jsx +++ b/src/components/quicklaunch.jsx @@ -114,7 +114,7 @@ export default function QuickLaunch({ type: "search", }); - if (!hideSearchSuggestions) { + if (!hideSearchSuggestions && searchProvider.suggestionUrl) { if (searchString.trim() !== searchSuggestions[0]) { fetch(`/api/searchSuggestion?query=${encodeURIComponent(searchString)}&providerName=${searchProvider.name}`).then(async (searchSuggestionResult) => { const newSearchSuggestions = await searchSuggestionResult.json(); diff --git a/src/pages/api/searchSuggestion.js b/src/pages/api/searchSuggestion.js index 5480eb5f..f1f680bf 100644 --- a/src/pages/api/searchSuggestion.js +++ b/src/pages/api/searchSuggestion.js @@ -1,11 +1,20 @@ import { searchProviders } from "components/widgets/search/search"; import cachedFetch from "utils/proxy/cached-fetch"; +import { widgetsFromConfig } from "utils/config/widget-helpers" export default async function handler(req, res) { const { query, providerName } = req.query; const provider = Object.values(searchProviders).find(({ name }) => name === providerName); + if (provider.name === "Custom") { + const widgets = await widgetsFromConfig(); + const searchWidget = widgets.find((w) => w.type === "search"); + + provider.url = searchWidget.options.url ?? ""; + provider.suggestionUrl = searchWidget.options.suggestionUrl ?? ""; + } + if (!provider.suggestionUrl) { return res.json([query, []]); // Responde with the same array format but with no suggestions. } diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 92833117..cc1168e4 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -211,9 +211,10 @@ function Home({ initialSettings }) { // if search provider is a list, try to retrieve from localstorage, fall back to the first searchProvider = getStoredProvider() ?? searchProviders[searchWidget.options.provider[0]]; } else if (searchWidget.options?.provider === "custom") { - searchProvider = { + searchProvider = {...searchProviders.custom, ...{ url: searchWidget.options.url, - }; + suggestionUrl: searchWidget.options.suggestionUrl, + }}; } else { searchProvider = searchProviders[searchWidget.options?.provider]; }