Move OAuth requests to fetch

This commit is contained in:
Marwin Hochfelsner 2025-02-15 23:21:39 +01:00
parent 90e787eed8
commit 3c4da558b0
6 changed files with 54 additions and 55 deletions

View file

@ -11,7 +11,6 @@
//= require leaflet.zoom
//= require leaflet.locationfilter
//= require i18n
//= require oauth
//= require matomo
//= require richtext

View file

@ -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("");

View file

@ -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() {

View file

@ -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) {

View file

@ -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) {

View file

@ -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;
}
});
}
});