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");
}
},