From ba6da2a6cdf13ef2e2c684462fba28babaf4c7da Mon Sep 17 00:00:00 2001 From: JTH Date: Thu, 29 Sep 2022 16:56:23 +0200 Subject: [PATCH] =?utf8?q?Don=E2=80=99t=20require=20a=20separate=20fetch()?= =?utf8?q?=20before=20calling=20openForm()?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- quickmod.user.js | 52 +++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 29 deletions(-) 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(); -- 2.39.2