From: JTH Date: Thu, 29 Sep 2022 14:56:23 +0000 (+0200) Subject: Don’t require a separate fetch() before calling openForm() X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=ba6da2a6cdf13ef2e2c684462fba28babaf4c7da;p=dfde%2Fquickmods.git Don’t require a separate fetch() before calling openForm() --- diff --git a/quickmod.user.js b/quickmod.user.js index bf940bb..8cd2196 100644 --- a/quickmod.user.js +++ b/quickmod.user.js @@ -14,22 +14,18 @@ async function banUser(username, reason) { /* The URL to the ban form does not need any IDs or hidden inputs. We * hardcode it here. */ - let resp = await fetch(toAbsoluteURL("./mcp.php?i=ban&mode=user")); - if (!resp.ok) { - throw "Konnte Formular zum Sperren von Benutzern nicht laden."; - } - let form, formData; try { - [form, formData] = await openForm(resp, "form#mcp_ban"); - } catch { - throw "Konnte Formular zum Sperren von Benutzern nicht öffnen."; + [form, formData] = await openForm(toAbsoluteURL("./mcp.php?i=ban&mode=user"), + "form#mcp_ban"); + } catch (err) { + throw `Konnte Formular zum Sperren von Benutzern nicht öffnen: ${err}`; } formData.set("ban", username); formData.set("banreason", reason); //formData.set("bangivereason", reason); - resp = await postForm(form, formData, "bansubmit"); + const resp = await postForm(form, formData, "bansubmit"); if (!resp.ok) { throw "Konnte Sperrung des Benutzers nicht anfragen."; } @@ -44,19 +40,15 @@ async function banUser(username, reason) { async function closeReport(post) { const reportLink = post.querySelector(".post-notice.reported a"); - let resp = await fetch(toAbsoluteURL(reportLink.href)); - if (!resp.ok) { - throw "Konnte Meldung nicht öffnen."; - } - let form, formData; try { - [form, formData] = await openForm(resp, "form#mcp_report"); - } catch { - throw "Konnte Formular zum Schließen der Meldung nicht öffnen."; + [form, formData] = await openForm(toAbsoluteURL(reportLink.href), + "form#mcp_report"); + } catch (err) { + throw `Konnte Formular zum Schließen der Meldung nicht öffnen: ${err}`; } - resp = await postForm(form, formData, "action[close]"); + const resp = await postForm(form, formData, "action[close]"); if (!resp.ok) { throw "Konnte Schließen der Meldung nicht anfragen."; } @@ -90,9 +82,15 @@ function isPostReported(post) { return post.querySelector(".post-notice.reported a") !== null; } -async function openForm(response, selector) { +async function openForm(urlOrResponse, selector) { + const resp = urlOrResponse instanceof Response ? urlOrResponse : + await fetch(urlOrResponse); + if (!resp.ok) { + throw `${resp.url}: ${resp.status}`; + } + const parser = new DOMParser(); - const txt = await response.text(); + const txt = await resp.text(); const doc = parser.parseFromString(txt, "text/html"); const form = doc.querySelector(selector); return [form, new FormData(form)]; @@ -178,16 +176,12 @@ async function remove_post_handler(event) { async function send_mcp_request_archival(post, reason) { const splitLink = document.querySelector("#quickmod .dropdown-contents a[href*='action=split']"); - let resp = await fetch(toAbsoluteURL(splitLink.href)); - if (!resp.ok) { - throw "Konnte Formular zum Aufteilen des Themas nicht laden."; - } let form, formData; try { - [form, formData] = await openForm(resp, "form#mcp"); - } catch { - throw "Konnte Formular zum Aufteilen des Themas nicht öffnen."; + [form, formData] = await openForm(toAbsoluteURL(splitLink.href), "form#mcp"); + } catch (err) { + throw `Konnte Formular zum Aufteilen des Themas nicht öffnen: ${err}`; } const post_id = post.id.slice(1); @@ -203,7 +197,7 @@ async function send_mcp_request_archival(post, reason) { formData.set("subject", thread_title); formData.set("to_forum_id", ARCHIVFORUMID); - resp = await postForm(form, formData, "mcp_topic_submit"); + const resp = await postForm(form, formData, "mcp_topic_submit"); if (!resp.ok) { throw "Konnte Aufteilen des Themas nicht anfragen."; } @@ -246,4 +240,4 @@ function add_buttons() { } } -add_buttons(); \ No newline at end of file +add_buttons();