From: Tom Hughes Date: Sun, 16 Feb 2025 13:18:14 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/5685' X-Git-Tag: live~280 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/c50e4f50c4fef0b11970202d3c7f95cdc5b620ba?hp=3d3b2b47964ec91ef1ab1946b7258a06665caced Merge remote-tracking branch 'upstream/pull/5685' --- diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 4c9aa8b91..a3fd93e27 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -11,7 +11,6 @@ //= require leaflet.zoom //= require leaflet.locationfilter //= require i18n -//= require oauth //= require matomo //= require richtext diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 4903703cd..0fa85a0cc 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -78,6 +78,9 @@ $(document).ready(function () { }); }; + const token = $("head").data("oauthToken"); + if (token) OSM.oauth = { authorization: "Bearer " + token }; + const params = OSM.mapParams(); map.attributionControl.setPrefix(""); diff --git a/app/assets/javascripts/index/changeset.js b/app/assets/javascripts/index/changeset.js index 1ec5940b2..6c1c6a2df 100644 --- a/app/assets/javascripts/index/changeset.js +++ b/app/assets/javascripts/index/changeset.js @@ -24,33 +24,36 @@ OSM.Changeset = function (map) { }; function updateChangeset(method, url, include_data) { - let 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() { diff --git a/app/assets/javascripts/index/new_note.js b/app/assets/javascripts/index/new_note.js index 73fcda97c..b1457d10b 100644 --- a/app/assets/javascripts/index/new_note.js +++ b/app/assets/javascripts/index/new_note.js @@ -34,17 +34,17 @@ OSM.NewNote = function (map) { }); function createNote(location, text, callback) { - $.ajax({ - url: "/api/0.6/notes.json", - type: "POST", - oauth: true, - data: { + fetch("/api/0.6/notes.json", { + method: "POST", + headers: { ...OSM.oauth }, + body: new URLSearchParams({ lat: location.lat, lon: location.lng, text - }, - success: callback - }); + }) + }) + .then(response => response.json()) + .then(callback); } function addCreatedNoteMarker(feature) { diff --git a/app/assets/javascripts/index/note.js b/app/assets/javascripts/index/note.js index 466a5451e..b9310a1af 100644 --- a/app/assets/javascripts/index/note.js +++ b/app/assets/javascripts/index/note.js @@ -36,32 +36,38 @@ OSM.Note = function (map) { function initialize(path, id, skipMoveToNote) { content.find("button[name]").on("click", function (e) { e.preventDefault(); - const data = $(e.target).data(); - const name = $(e.target).attr("name"); - const ajaxSettings = { - url: data.url, - type: data.method, - oauth: true, - success: () => { + const { url, method } = $(e.target).data(), + name = $(e.target).attr("name"), + data = new URLSearchParams(); + content.find("button[name]").prop("disabled", true); + + if (name !== "subscribe" && name !== "unsubscribe" && name !== "reopen") { + data.set("text", content.find("textarea").val()); + } + + 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(path, () => { initialize(path, id, false); }); - }, - error: (xhr) => { + }) + .catch(error => { content.find("#comment-error") - .text(xhr.responseText) + .text(error.message) .prop("hidden", false) .get(0).scrollIntoView({ block: "nearest" }); updateButtons(); - } - }; - - if (name !== "subscribe" && name !== "unsubscribe" && name !== "reopen") { - ajaxSettings.data = { text: content.find("textarea").val() }; - } - - content.find("button[name]").prop("disabled", true); - $.ajax(ajaxSettings); + }); }); content.find("textarea").on("input", function (e) { diff --git a/app/assets/javascripts/oauth.js b/app/assets/javascripts/oauth.js deleted file mode 100644 index f19576458..000000000 --- a/app/assets/javascripts/oauth.js +++ /dev/null @@ -1,12 +0,0 @@ -$(document).ready(function () { - const application_data = $("head").data(); - - if (application_data.oauthToken) { - $.ajaxPrefilter(function (options) { - if (options.oauth) { - options.headers = options.headers || {}; - options.headers.Authorization = "Bearer " + application_data.oauthToken; - } - }); - } -});