Index page is back

This commit is contained in:
MotorTruck1221 2025-01-07 00:05:21 -07:00
parent 84f8605269
commit 1e0508ac85
No known key found for this signature in database
GPG key ID: 08F417E2B8B61EA4
3 changed files with 89 additions and 20 deletions

View file

@ -47,7 +47,7 @@ import { VERSION } from "astro:env/client";
import { SupportedSites, SearchEngines, SettingsVals } from "@utils/values"; import { SupportedSites, SearchEngines, SettingsVals } from "@utils/values";
import { search, Elements } from "@utils/index"; import { search, Elements } from "@utils/index";
import { BareClient } from "@mercuryworkshop/bare-mux"; import { BareClient } from "@mercuryworkshop/bare-mux";
import { defaultStore } from "@utils/storage"; import { defaultStore } from "@utils/storage";
type Suggestion = { type Suggestion = {
phrase: string; phrase: string;
@ -66,35 +66,104 @@ import { defaultStore } from "@utils/storage";
const omnibox = Elements.exists<HTMLDivElement>(await se.next()); const omnibox = Elements.exists<HTMLDivElement>(await se.next());
const copyright = Elements.exists<HTMLDivElement>(await se.next()); const copyright = Elements.exists<HTMLDivElement>(await se.next());
const iframe = Elements.exists<HTMLIFrameElement>(await se.next()); const iframe = Elements.exists<HTMLIFrameElement>(await se.next());
const prox = async (input: string, prox: "uv" | "sj") => {
iframe.classList.remove("hidden");
const val = search(
input,
defaultStore.getVal(SettingsVals.proxy.searchEngine)
? SearchEngines[defaultStore.getVal(SettingsVals.proxy.searchEngine)]
: SearchEngines.ddg
);
switch(prox) {
case "uv":
iframe.src = `${__uv$config.prefix}${__uv$config.encodeUrl!(val)}`;
break;
case "sj":
const { sj } = await window.sw.getSWInfo();
iframe.src = sj.encodeUrl(val);
break;
}
}
input.addEventListener("keypress", async (event: any) => { input.addEventListener("keypress", async (event: any) => {
if (event.key === "Enter") { if (event.key === "Enter") {
copyright.classList.add("hidden"); copyright.classList.add("hidden");
if (defaultStore.getVal(SettingsVals.proxy.proxy.key) === SettingsVals.proxy.proxy.available.automatic) { if (defaultStore.getVal(SettingsVals.proxy.proxy.key) === SettingsVals.proxy.proxy.available.automatic) {
switch(SupportedSites[input.value]) { switch(SupportedSites[input.value]) {
case "uv": case "uv":
iframe.classList.remove("hidden"); prox(input.value, "uv");
iframe.src = `${__uv$config.prefix}${__uv$config.encodeUrl!(
search(
input.value,
defaultStore.getVal(SettingsVals.proxy.searchEngine)
? SearchEngines[defaultStore.getVal(SettingsVals.proxy.searchEngine)]
: SearchEngines.ddg
))}
`
break; break;
case "sj": case "sj":
const { sj } = await window.sw.getSWInfo(); prox(input.value, "sj");
iframe.classList.remove("hidden");
iframe.src = sj.encodeUrl(
search(
input.value,
defaultStore.getVal(SettingsVals.proxy.searchEngine) ? SearchEngines[defaultStore.getVal(SettingsVals.proxy.searchEngine)]: SearchEngines.ddg
)
);
break; break;
default:
prox(input.value, "uv");
} }
} }
} }
});
input.addEventListener("input", async () => {
if (input.value.length < 3) {
omnibox.innerHTML = "";
omnibox.classList.add("hidden");
input.classList.add("rounded-b-2xl");
return;
}
omnibox.classList.remove("hidden");
input.classList.remove("rounded-b-2xl");
const data = await bc.fetch(`https://api.duckduckgo.com/ac?q=${encodeURIComponent(input.value)}&format=json`);
const res = await data.json();
const fData = res.slice(0, 6); // Trim to only the first 8 results.
if (fData.length <= 0) {
omnibox.classList.add("hidden");
input.classList.add("rounded-b-2xl");
return;
}
omnibox.innerHTML = "";
fData.map((res: Suggestion) => {
const span = document.createElement("span") as HTMLSpanElement;
const p = document.createElement("p") as HTMLParagraphElement;
p.classList.add(
"cursor-pointer",
"text-ellipsis",
"text-center",
"w-full",
"overflow-hidden",
"whitespace-nowrap"
);
p.innerText = res.phrase;
span.classList.add(
"cursor-pointer",
"font-roboto",
"border-b",
"border-input-border-color",
"last:rounded-b-xl",
"last:border-none",
"text-ellipsis",
"whitespace-nowrap",
"w-full",
"text-input-text",
"h-9",
"text-xl",
"text-align-center",
"overflow-hidden",
"flex",
"items-center",
"justify-center",
"hover:bg-lighter",
"active:bg-primary"
);
span.addEventListener("click", () => {
input.value = res.phrase;
input.dispatchEvent(
new KeyboardEvent("keypress", { key: "Enter", code: "Enter" })
);
});
span.appendChild(p);
omnibox.appendChild(span);
});
}); });
} }

View file

@ -13,7 +13,7 @@ import Layout from "@layouts/Layout.astro";
import { navigate } from "astro:transitions/client"; import { navigate } from "astro:transitions/client";
const eHandler = new EventHandler({ const eHandler = new EventHandler({
events: { events: {
"astro:page-load": () => { "DOMContentLoaded": () => {
let currentLang = defaultStore.getVal(SettingsVals.i18n.lang); let currentLang = defaultStore.getVal(SettingsVals.i18n.lang);
if (currentLang) { if (currentLang) {
try { try {

View file

@ -20,7 +20,7 @@ import Layout from "@layouts/Layout.astro";
const eHandle = new EventHandler({ const eHandle = new EventHandler({
events: { events: {
"astro:page-load": (() => { "DOMContentLoaded": (() => {
const isIframe = isComingFromIframe(); const isIframe = isComingFromIframe();
if (!isIframe) { if (!isIframe) {
console.log("Assuming request isn't coming from iframe. Redirecting..."); console.log("Assuming request isn't coming from iframe. Redirecting...");