]> git.openstreetmap.org Git - rails.git/commitdiff
Move OAuth requests to fetch
authorMarwin Hochfelsner <50826859+hlfan@users.noreply.github.com>
Sat, 15 Feb 2025 22:21:39 +0000 (23:21 +0100)
committerMarwin Hochfelsner <50826859+hlfan@users.noreply.github.com>
Sun, 16 Feb 2025 07:57:04 +0000 (08:57 +0100)
app/assets/javascripts/application.js
app/assets/javascripts/index.js
app/assets/javascripts/index/changeset.js
app/assets/javascripts/index/new_note.js
app/assets/javascripts/index/note.js
app/assets/javascripts/oauth.js [deleted file]

index 464bbecee17db7f7ded5ddcf115ff0dc2c13395b..212474a89fb01ef3d4dc792824deef3286a5e57f 100644 (file)
@@ -11,7 +11,6 @@
 //= require leaflet.zoom
 //= require leaflet.locationfilter
 //= require i18n
 //= require leaflet.zoom
 //= require leaflet.locationfilter
 //= require i18n
-//= require oauth
 //= require matomo
 //= require richtext
 
 //= require matomo
 //= require richtext
 
index 810327e3fe15bd48a13dd4f5212bcb3bf932fbb7..0d235834d2ce97ab150ba18ad26261a96aa24260 100644 (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("");
   var params = OSM.mapParams();
 
   map.attributionControl.setPrefix("");
index d3e61270bf7dac9945d0c3a84457d821f39d3b82..772b33f6651b3238540087404db224cbeaa1c4b1 100644 (file)
@@ -24,33 +24,36 @@ OSM.Changeset = function (map) {
   };
 
   function updateChangeset(method, url, include_data) {
   };
 
   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) {
 
     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);
         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")
         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" });
           .prop("hidden", false)
           .get(0).scrollIntoView({ block: "nearest" });
-      }
-    });
+      });
   }
 
   function initialize() {
   }
 
   function initialize() {
index a1511a3bc14b6184bb5777bb718e2ae9e22f478c..6b24be07d28a20e6eebd37ed960d85667af7cd93 100644 (file)
@@ -34,17 +34,17 @@ OSM.NewNote = function (map) {
   });
 
   function createNote(location, text, callback) {
   });
 
   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
         lat: location.lat,
         lon: location.lng,
         text
-      },
-      success: callback
-    });
+      })
+    })
+      .then(response => response.json())
+      .then(callback);
   }
 
   function addCreatedNoteMarker(feature) {
   }
 
   function addCreatedNoteMarker(feature) {
index 6a0487aaac21a2622386f66257860975357b833d..db5a62456b5a636c59f2c47944c3f1616827fb06 100644 (file)
@@ -42,32 +42,38 @@ OSM.Note = function (map) {
   function initialize(path, id) {
     content.find("button[name]").on("click", function (e) {
       e.preventDefault();
   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);
           });
           OSM.loadSidebarContent(path, () => {
             initialize(path, id);
           });
-        },
-        error: (xhr) => {
+        })
+        .catch(error => {
           content.find("#comment-error")
           content.find("#comment-error")
-            .text(xhr.responseText)
+            .text(error.message)
             .prop("hidden", false)
             .get(0).scrollIntoView({ block: "nearest" });
           updateButtons();
             .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) {
     });
 
     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 (file)
index 0c3538c..0000000
+++ /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;
-      }
-    });
-  }
-});