]> git.openstreetmap.org Git - rails.git/commitdiff
Cache csrf properties
authorMarwin Hochfelsner <50826859+hlfan@users.noreply.github.com>
Fri, 28 Feb 2025 21:01:23 +0000 (22:01 +0100)
committerMarwin Hochfelsner <50826859+hlfan@users.noreply.github.com>
Sat, 1 Mar 2025 12:21:30 +0000 (13:21 +0100)
app/assets/javascripts/application.js
app/assets/javascripts/index/search.js
app/assets/javascripts/leaflet.share.js

index a3fd93e27c1daaa3cd08a5881f6d266cf6e16e1b..99bfede7e0b88ed292a7c45e722debc8fa1f01fb 100644 (file)
@@ -95,6 +95,9 @@ $(document).ready(function () {
         breakpointWidth = 768;
   let moreItemWidth = 0;
 
+  OSM.csrf = {};
+  OSM.csrf[($("meta[name=csrf-param]").attr("content"))] = $("meta[name=csrf-token]").attr("content");
+
   function updateHeader() {
     const windowWidth = $(window).width();
 
index b33d904a97613ca3c5369bfa453a9b3b3de9eb44..b3ef3ceb3c13de3d4a7dbad7b4d8f7a313719000 100644 (file)
@@ -44,19 +44,14 @@ OSM.Search = function (map) {
     e.preventDefault();
     e.stopPropagation();
 
-    const div = $(this).parents(".search_more"),
-          csrf_param = $("meta[name=csrf-param]").attr("content"),
-          csrf_token = $("meta[name=csrf-token]").attr("content"),
-          params = new URLSearchParams();
+    const div = $(this).parents(".search_more");
 
     $(this).hide();
     div.find(".loader").show();
 
-    params.set(csrf_param, csrf_token);
-
     fetch($(this).attr("href"), {
       method: "POST",
-      body: params
+      body: new URLSearchParams(OSM.csrf)
     })
       .then(response => response.text())
       .then(data => div.replaceWith(data));
@@ -120,20 +115,17 @@ OSM.Search = function (map) {
 
   page.load = function () {
     $(".search_results_entry").each(function (index) {
-      const entry = $(this),
-            csrf_param = $("meta[name=csrf-param]").attr("content"),
-            csrf_token = $("meta[name=csrf-token]").attr("content"),
-            params = new URLSearchParams({
-              zoom: map.getZoom(),
-              minlon: map.getBounds().getWest(),
-              minlat: map.getBounds().getSouth(),
-              maxlon: map.getBounds().getEast(),
-              maxlat: map.getBounds().getNorth()
-            });
-      params.set(csrf_param, csrf_token);
+      const entry = $(this);
       fetch(entry.data("href"), {
         method: "POST",
-        body: params
+        body: new URLSearchParams({
+          zoom: map.getZoom(),
+          minlon: map.getBounds().getWest(),
+          minlat: map.getBounds().getSouth(),
+          maxlon: map.getBounds().getEast(),
+          maxlat: map.getBounds().getNorth(),
+          ...OSM.csrf
+        })
       })
         .then(response => response.text())
         .then(function (html) {
index 325b168b2637aaf973da902cab3a5fe69f8b1b85..42e195f0af1aa46a77053c290b484dd975234992 100644 (file)
@@ -227,13 +227,11 @@ L.OSM.share = function (options) {
         .appendTo($form);
     }
 
-    const csrf_param = $("meta[name=csrf-param]").attr("content"),
-          csrf_token = $("meta[name=csrf-token]").attr("content");
+    const csrfAttrs = { type: "hidden" };
+    [[csrfAttrs.name, csrfAttrs.value]] = Object.entries(OSM.csrf);
 
     $("<input>")
-      .attr("name", csrf_param)
-      .attr("value", csrf_token)
-      .attr("type", "hidden")
+      .attr(csrfAttrs)
       .appendTo($form);
 
     const args = {