From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Sat, 15 Feb 2025 22:21:39 +0000 (+0100) Subject: Move OAuth requests to fetch X-Git-Tag: live~29^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/3c4da558b0ca79e2ab1a594d719b81d2766e4bd6 Move OAuth requests to fetch --- diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 464bbecee..212474a89 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 810327e3f..0d235834d 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 }; + var params = OSM.mapParams(); map.attributionControl.setPrefix(""); diff --git a/app/assets/javascripts/index/changeset.js b/app/assets/javascripts/index/changeset.js index d3e61270b..772b33f66 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) { - 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() { diff --git a/app/assets/javascripts/index/new_note.js b/app/assets/javascripts/index/new_note.js index a1511a3bc..6b24be07d 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 6a0487aaa..db5a62456 100644 --- a/app/assets/javascripts/index/note.js +++ b/app/assets/javascripts/index/note.js @@ -42,32 +42,38 @@ OSM.Note = function (map) { function initialize(path, id) { content.find("button[name]").on("click", function (e) { e.preventDefault(); - var data = $(e.target).data(); - var name = $(e.target).attr("name"); - var 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); }); - }, - 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 0c3538c51..000000000 --- a/app/assets/javascripts/oauth.js +++ /dev/null @@ -1,12 +0,0 @@ -$(document).ready(function () { - var 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; - } - }); - } -});