X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/b0348093f8877d2f59f153bf35e87ba411f4004b..2de26d54ef22c5653f830d0ce4938df78d0ca0fd:/app/assets/javascripts/index/changeset.js diff --git a/app/assets/javascripts/index/changeset.js b/app/assets/javascripts/index/changeset.js index d3e61270b..6c1c6a2df 100644 --- a/app/assets/javascripts/index/changeset.js +++ b/app/assets/javascripts/index/changeset.js @@ -1,6 +1,6 @@ OSM.Changeset = function (map) { - var page = {}, - content = $("#sidebar_content"); + const page = {}, + content = $("#sidebar_content"); page.pushstate = page.popstate = function (path) { OSM.loadSidebarContent(path, function () { @@ -12,7 +12,7 @@ OSM.Changeset = function (map) { const changesetData = content.find("[data-changeset]").data("changeset"); changesetData.type = "changeset"; - var hashParams = OSM.parseHash(window.location.hash); + const hashParams = OSM.parseHash(window.location.hash); initialize(); map.addObject(changesetData, function (bounds) { if (!hashParams.center && bounds.isValid()) { @@ -24,40 +24,43 @@ OSM.Changeset = function (map) { }; function updateChangeset(method, url, include_data) { - var data; + const data = new URLSearchParams(); content.find("#comment-error").prop("hidden", true); content.find("button[data-method][data-url]").prop("disabled", true); if (include_data) { - data = { text: content.find("textarea").val() }; - } else { - data = {}; + data.set("text", content.find("textarea").val()); } - $.ajax({ - url: url, - type: method, - oauth: true, - data: data, - success: function () { + fetch(url, { + method: method, + headers: { ...OSM.oauth }, + body: data + }) + .then(response => { + if (response.ok) return response; + return response.text().then(text => { + throw new Error(text); + }); + }) + .then(() => { OSM.loadSidebarContent(window.location.pathname, page.load); - }, - error: function (xhr) { + }) + .catch(error => { content.find("button[data-method][data-url]").prop("disabled", false); content.find("#comment-error") - .text(xhr.responseText) + .text(error.message) .prop("hidden", false) .get(0).scrollIntoView({ block: "nearest" }); - } - }); + }); } function initialize() { content.find("button[data-method][data-url]").on("click", function (e) { e.preventDefault(); - var data = $(e.target).data(); - var include_data = e.target.name === "comment"; + const data = $(e.target).data(); + const include_data = e.target.name === "comment"; updateChangeset(data.method, data.url, include_data); });