From 6e73d741c828c0e12c3ba1e1270d8b3c4d3182f0 Mon Sep 17 00:00:00 2001 From: Lia Lenckowski Date: Fri, 4 Aug 2023 16:56:23 +0200 Subject: add bang to search engine name this allows firefox users to add fastbangs multiple times as a search engine, when using different default bangs --- src/Config.hs | 13 ++++++++----- src/Main.hs | 13 +++---------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/Config.hs b/src/Config.hs index 799b297..45f9808 100644 --- a/src/Config.hs +++ b/src/Config.hs @@ -26,16 +26,19 @@ faviconUrl :: IsString s => IO s faviconUrl = (fromString . fromMaybe "https://69owo.de/favicon.ico") <$> lookupEnv "FAVICON_URL" -makeOpenSearch :: (IsString s, Semigroup s) => s -> IO s -makeOpenSearch searchUrl = do +makeOpenSearch :: (IsString s, Semigroup s) => Maybe s -> IO s +makeOpenSearch defBang = do favicon <- faviconUrl + bp <- getBaseUrl + let (searchUrl, name) = case defBang of + Nothing -> (bp <> "/#{searchTerms}", "FastBangs") + Just b -> (bp <> "/#" <> b <> "#{searchTerms}", "FastBangs (" <> b <> ")") + return $ " " xmlns:moz=\"http://www.mozilla.org/2006/browser/search/\">\n" - <> " Fastbangs\n" + <> " " <> name <> "\n" <> " Handles search bangs (mostly) locally.\n" <> " UTF-8\n" <> " " <> favicon <> "\n" <> " searchUrl <> "\"/>\n" - <> " \n" - <> " \n" <> "\n" diff --git a/src/Main.hs b/src/Main.hs index ff6823d..b5b35a1 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -15,7 +15,6 @@ import Data.Aeson import Database.Persist.Sqlite import Data.Char (isAlphaNum) import Data.Function ((&)) -import Data.Functor ((<&>)) import Data.Maybe (maybeToList) import Network.Wai.Handler.Warp hiding (getPort, getHost) import Yesod @@ -123,15 +122,9 @@ postSubmitR = do getOpenSearchR :: Handler TypedContent getOpenSearchR = do neverExpires - baseUrl <- liftIO getBaseUrl - url <- lookupGetParam "default" <&> \case - Nothing -> baseUrl <> "/#{searchTerms}" - Just b -> baseUrl <> "/#" <> b <> "#{searchTerms}" - - liftIO $ - TypedContent "application/opensearchdescription+xml" - . toContent - <$> makeOpenSearch url + + resXml <- liftIO . makeOpenSearch =<< lookupGetParam "default" + return $ TypedContent "application/opensearchdescription+xml" $ toContent resXml postVerdictR :: Bool -> Handler () postVerdictR b = do -- cgit v1.2.3-70-g09d2