From 978282d55ed9ed0cccdf3b35ec45339bb8ee3ad9 Mon Sep 17 00:00:00 2001 From: Deer Canidae Date: Mon, 3 Mar 2025 19:41:18 -0500 Subject: [PATCH 1/2] Added default bang from URL * Allows mobile user to select a default bang without using dev tools * Keep honoring legacy local-storage * More resilient bang fallback --- src/main.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main.ts b/src/main.ts index 13ebe4820..ea63dd57d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -44,8 +44,24 @@ function noSearchDefaultPageRender() { }); } -const LS_DEFAULT_BANG = localStorage.getItem("default-bang") ?? "g"; -const defaultBang = bangs.find((b) => b.t === LS_DEFAULT_BANG); +function findBang(url: URL) { + //Honoring legacy local-storage defined bangs + const LS_DEFAULT_BANG = localStorage.getItem("default-bang"); + if (LS_DEFAULT_BANG) { + const defaultBang = bangs.find((b) => b.t === LS_DEFAULT_BANG); + if (defaultBang) + return defaultBang; + } + + //Obtaining default bang from URL + const URL_DEFAULT_BANG = url.searchParams.get("default_bang")?.trim() ?? "g"; //can contain invalid bang + const defaultUrlBang = bangs.find((b) => b.t == URL_DEFAULT_BANG); + if (defaultUrlBang) + return defaultUrlBang; + + //In case everything else is invalid + return bangs.find((b) => b.t == "g")!; +} function getBangredirectUrl() { const url = new URL(window.location.href); @@ -58,7 +74,7 @@ function getBangredirectUrl() { const match = query.match(/!(\S+)/i); const bangCandidate = match?.[1]?.toLowerCase(); - const selectedBang = bangs.find((b) => b.t === bangCandidate) ?? defaultBang; + const selectedBang = bangs.find((b) => b.t === bangCandidate) ?? findBang(url); // Remove the first bang from the query const cleanQuery = query.replace(/!\S+\s*/i, "").trim(); From ebed9f009d07b6800a2d03710cc50071c24b4be7 Mon Sep 17 00:00:00 2001 From: Deer Canidae Date: Mon, 3 Mar 2025 21:26:51 -0500 Subject: [PATCH 2/2] Added UI to pick default bang through URL param --- src/global.css | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/main.ts | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/src/global.css b/src/global.css index 746822504..b58ee6df0 100644 --- a/src/global.css +++ b/src/global.css @@ -61,6 +61,7 @@ h6 { a { color: #444444; } + a:hover { color: #888888; } @@ -148,3 +149,47 @@ textarea { .footer a:hover { color: #333; } + +.bang-form { + margin-top: 32px; + text-align: left; +} + +label { + width: 100%; + font-size: inherit; + color: inherit; + font-family: inherit; +} + +.bang-container { + margin-top: 4px; + display: flex; + flex-direction: row; + gap: 8px; +} + +.bang-input { + width: 100%; + padding: 8px 12px; + border: 1px solid #ddd; + border-radius: 4px; + background: #f5f5f5; +} + +input[type="submit"] { + font-family: inherit; + font-size: 0.8em; + aspect-ratio: 1; + border: none; + background: transparent; +} + +.bang-error { + margin-top: 8px; + color: crimson; +} + +.bang-error>a { + color: inherit; +} diff --git a/src/main.ts b/src/main.ts index ea63dd57d..3ec3ec50c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -19,6 +19,22 @@ function noSearchDefaultPageRender() { Copy +
+ +
+ + +
+ +
+