handleReportIssueFormSubmission: async()

in src/js/popup/popup.js [1291:1343]


        handleReportIssueFormSubmission: async (event, formData) => {          
          event.preventDefault();

          formData = popup.panel.webcompat.getFormData();

          // Do not submit if the form is not valid
          if (!formData.form.dataset.formIsValid) {
            return false;
          }

          formData.reportIssueSubmitBtn.classList.toggle("is-loading");
          
          const data = new FormData(event.target);
          const reportData = Object.fromEntries(data.entries());
          reportData.user_agent = await getBrowser();

          Object.keys(reportData).forEach(function (value) {
            // Switch "on" to true
            if (reportData[value] === "on") {
              reportData[value] = true;
            }
            // Remove from report if empty string
            if (reportData[value] === "") {
              delete reportData[value];
            }
          });

          // Clean URL data to add "http://" before it if the custom input doesn't contain a HTTP protocol
          if (
            !(
              reportData.issue_on_domain.startsWith("http://") ||
              reportData.issue_on_domain.startsWith("https://")
            )
          ) {
            reportData.issue_on_domain = "http://" + reportData.issue_on_domain;
          }

          // Send data and get a status code back
          const postReportWebcompatIssueRespStatus = await browser.runtime.sendMessage({
            method: "postReportWebcompatIssue",
            description: reportData,
          });
          
          // If submission is successful
          if (postReportWebcompatIssueRespStatus == 201) {
            popup.panel.webcompat.showSuccessReportSubmission(formData);
            formData.reportIssueSubmitBtn.classList.remove("is-loading");
          } else {
            // TODO: Add localized error state
            formData.reportIssueSubmitBtn.classList.remove("is-loading");
            formData.reportIssueSubmitBtn.classList.add("t-error");
          }
        },