]> git.aero2k.de Git - dfde/quickmods.git/commitdiff
Don’t require a separate fetch() before calling openForm()
authorJTH <JTH@debianforum.de>
Thu, 29 Sep 2022 14:56:23 +0000 (16:56 +0200)
committerThorsten <mail@aero2k.de>
Mon, 3 Oct 2022 21:24:22 +0000 (23:24 +0200)
quickmod.user.js

index bf940bbfdf4311a3964bc650172fdddd27f22afc..8cd219619b96babb8ff15f9e35b09be930875141 100644 (file)
@@ -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();