Auto-remove notifications on fave

This automatically removes submission notifications, when faving a submission.

// ==UserScript==
// @name         Auto-remove notifications on fave
// @namespace    https://github.com/f1r3w4rr10r/fa-utils
// @version      1.0.0
// @description  This automatically removes submission notifications, when faving a submission.
// @author       f1r3w4rr10r
// @match        https://www.furaffinity.net/view/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license      MIT
// @grant        none
// ==/UserScript==

(async function () {
  "use strict";

  const favLinks = Array.from(
    document.querySelectorAll(
      '.favorite-nav > [href^="/fav/"], .fav > [href^="/fav/"]',
    ),
  );

  for (const favLink of favLinks) {
    if (!(favLink instanceof HTMLAnchorElement))
      throw new Error("'favLink' was not an instance of 'HTMLAnchorElement'.");

    favLink.addEventListener("click", async (event) => {
      event.preventDefault();

      const href = favLink.href;
      const urlMatch = href.match(/\/fav\/(\d+)\//);
      if (!urlMatch) {
        console.error("The fav URL did not match.", href);
        throw new Error("The fav URL did not match.");
      }

      const submissionId = urlMatch[1];
      if (!submissionId) throw new Error("Could not extract a submission ID.");

      const result = await fetch("/msg/submissions/old@24/", {
        method: "POST",
        body: new URLSearchParams({
          "messagecenter-action": "remove_checked",
          "submissions[]": submissionId,
        }),
        redirect: "manual",
      });

      if (result.type !== "opaqueredirect") {
        console.error("Could not remove the submission notification.", result);
        throw new Error("Could not remove the submission notification.");
      }

      window.location.assign(href);
    });
  }
})();