aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontend/admin.ts34
-rw-r--r--frontend/pwmodal.ts32
-rw-r--r--frontend/start.ts24
-rw-r--r--frontend/submit.ts8
-rw-r--r--frontend/ui.ts3
5 files changed, 46 insertions, 55 deletions
diff --git a/frontend/admin.ts b/frontend/admin.ts
index 40a7a94..6c3ee5b 100644
--- a/frontend/admin.ts
+++ b/frontend/admin.ts
@@ -4,13 +4,12 @@ interface PendingBang {
bang: string,
name: string,
url: string,
- email: string | undefined,
+ email?: string,
}
-async function sendVerdict(user: string, pw: string, b: PendingBang,
- accept: boolean, info_block: HTMLDivElement)
-{
- let err = await fetch(accept? "acceptBang" : "rejectBang", {
+async function send_verdict(user: string, pw: string, b: PendingBang,
+ accept: boolean, info_block: HTMLDivElement) {
+ const err = await fetch(accept ? "acceptBang" : "rejectBang", {
headers: {
Accept: "application/json",
"Content-Type": "application/json",
@@ -21,8 +20,7 @@ async function sendVerdict(user: string, pw: string, b: PendingBang,
}).then(_ => null).catch(e => "" + e)
if (err)
- info_block.appendChild(e("p", {class: "verdict-error"},
- "Something went wrong: " + await err))
+ info_block.appendChild(e("p", { class: "verdict-error" }, "Something went wrong: " + err))
else
info_block.remove()
// TODO in the accept case, we should try invalidating the browser cache
@@ -30,7 +28,7 @@ async function sendVerdict(user: string, pw: string, b: PendingBang,
// see that the etag has changed; idk of that works
}
-export async function tryLoadAdminPanel(user: string, pw: string) {
+export async function try_load_admin_panel(user: string, pw: string) {
const r = await fetch("pendingBangs", {
headers: {
Accept: "application/json",
@@ -48,22 +46,22 @@ export async function tryLoadAdminPanel(user: string, pw: string) {
for (const e of [...document.getElementsByTagName("section")]) e.remove()
document.body.appendChild(e("section", {}, ...pending.map(b => {
- const btn_accept = e("button", {class: "pending-accept"}, "Accept")
- const btn_reject = e("button", {class: "pending-reject"}, "Reject")
+ const btn_accept = e("button", { class: "pending-accept" }, "Accept")
+ const btn_reject = e("button", { class: "pending-reject" }, "Reject")
- let r = e("div", {class: "pending-block"},
- e("span", {class: "pending-info"},
- e("p", {class: "pending-bang"}, "!" + b.bang),
- e("p", {class: "pending-name"}, b.name),
- e("p", {class: "pending-url"}, b.url),
- ...(b.email? [e("p", {class: "pending-email"}, b.email)] : [])
+ const r = e("div", { class: "pending-block" },
+ e("span", { class: "pending-info" },
+ e("p", { class: "pending-bang" }, "!" + b.bang),
+ e("p", { class: "pending-name" }, b.name),
+ e("p", { class: "pending-url" }, b.url),
+ ...(b.email ? [e("p", { class: "pending-email" }, b.email)] : [])
),
btn_accept,
btn_reject,
)
- btn_accept.addEventListener("click", () => sendVerdict(user, pw, b, true, r))
- btn_reject.addEventListener("click", () => sendVerdict(user, pw, b, false, r))
+ btn_accept.addEventListener("click", () => send_verdict(user, pw, b, true, r))
+ btn_reject.addEventListener("click", () => send_verdict(user, pw, b, false, r))
return r
})))
diff --git a/frontend/pwmodal.ts b/frontend/pwmodal.ts
index a20a79f..485896a 100644
--- a/frontend/pwmodal.ts
+++ b/frontend/pwmodal.ts
@@ -1,25 +1,21 @@
import { e } from "./helper.ts"
-import { tryLoadAdminPanel } from "./admin.ts"
+import { try_load_admin_panel } from "./admin.ts"
export function pw_modal() {
- const inp_name = e("input", {type: "text", placeholder: "Username"})
- const inp_pw = e("input", {type: "password", placeholder: "Password"})
- const error_msg = e("span", {class: "error-msg"}, "")
- const login_btn = e("button", {
- onclick: ev => {
- ev.preventDefault()
- tryLoadAdminPanel(inp_name.value, inp_pw.value).catch(err => {
- error_msg.textContent = err
- })
- }
- }, "Login")
-
+ let inp_name: HTMLInputElement, inp_pw: HTMLInputElement, error_msg: HTMLSpanElement;
return e("dialog", {},
- e("form", {method: "dialog"},
- inp_name,
- inp_pw,
- login_btn,
- error_msg,
+ e("form", { method: "dialog" },
+ inp_name = e("input", { type: "text", placeholder: "Username" }),
+ inp_pw = e("input", { type: "password", placeholder: "Password" }),
+ e("button", {
+ onclick: ev => {
+ ev.preventDefault()
+ try_load_admin_panel(inp_name.value, inp_pw.value).catch(err => {
+ error_msg.textContent = err
+ })
+ }
+ }, "Login"),
+ error_msg = e("span", { class: "error-msg" }, ""),
)
)
}
diff --git a/frontend/start.ts b/frontend/start.ts
index 6a82af6..79ee9ef 100644
--- a/frontend/start.ts
+++ b/frontend/start.ts
@@ -62,25 +62,22 @@ export function section_engine_select() {
export function section_admin_btn() {
const modal = pw_modal()
-
- const btn = e("button", {
- class: "open-modal",
- onclick: () => modal.showModal()
- }, "Admin Login")
-
- return e("section", {class: "admin-btn"},
- btn,
- modal)
+ return e("section", { class: "admin-btn" },
+ e("button", {
+ class: "open-modal",
+ onclick: () => modal.showModal()
+ }, "Admin Login"),
+ modal
+ )
}
interface FuzzItem<E> { score: number, obj: E }
-let bangsSearch: Promise<(query: string) => FuzzItem<{bang: string, name: string, url: string}>[]>
- | undefined = undefined;
+let bangsSearch: Promise<(query: string) => FuzzItem<{ bang: string, name: string, url: string }>[]> | undefined = undefined;
function setSearchResults(ul: HTMLElement, input: HTMLInputElement, submit: () => void) {
if (bangsSearch === undefined) {
bangsSearch = bangs.then(bangs => {
- const searchSpace: {bang: string, name: string, url: string}[] = []
+ const searchSpace: { bang: string, name: string, url: string }[] = []
for (const k in bangs) {
searchSpace.push({
bang: k,
@@ -108,7 +105,8 @@ function setSearchResults(ul: HTMLElement, input: HTMLInputElement, submit: () =
const it = r.obj
const li = e("li", {},
e("p", { class: "name" }, it.name),
- e("p", { class: "bang" }, it.bang))
+ e("p", { class: "bang" }, it.bang)
+ )
li.addEventListener("click", () => {
input.value = it.bang
submit()
diff --git a/frontend/submit.ts b/frontend/submit.ts
index 44df7b9..1e67b32 100644
--- a/frontend/submit.ts
+++ b/frontend/submit.ts
@@ -42,10 +42,10 @@ export function section_submit() {
If an email address is provided, you will be informed about the status of your proposal.
`),
e("table", {},
- e("tr", {}, e("td", {}, e("label", {for: "i-name" }, "Website Name:" )), e("td", {}, name_input )),
- e("tr", {}, e("td", {}, e("label", {for: "i-bang" }, "Bang:" )), e("td", {}, bang_input )),
- e("tr", {}, e("td", {}, e("label", {for: "i-url" }, "Search URL:" )), e("td", {}, url_input )),
- e("tr", {}, e("td", {}, e("label", {for: "i-email"}, "Notification email (optional):")), e("td", {}, email_input))
+ e("tr", {}, e("td", {}, e("label", { for: "i-name" }, "Website Name:")), e("td", {}, name_input)),
+ e("tr", {}, e("td", {}, e("label", { for: "i-bang" }, "Bang:")), e("td", {}, bang_input)),
+ e("tr", {}, e("td", {}, e("label", { for: "i-url" }, "Search URL:")), e("td", {}, url_input)),
+ e("tr", {}, e("td", {}, e("label", { for: "i-email" }, "Notification email (optional):")), e("td", {}, email_input))
),
submit_button
)
diff --git a/frontend/ui.ts b/frontend/ui.ts
index 675a5a8..f0146c5 100644
--- a/frontend/ui.ts
+++ b/frontend/ui.ts
@@ -7,8 +7,7 @@ export function add_page_content(engine?: string) {
for (const e of [...document.getElementsByTagName("section")]) e.remove()
if (engine == "~submit") document.body.append(section_submit())
else if (engine) document.body.append(section_search(engine), section_info_search())
- else document.body.append(section_info_start(), section_engine_select(),
- section_admin_btn())
+ else document.body.append(section_info_start(), section_engine_select(), section_admin_btn())
}
let status_el: HTMLElement