From ea1523023525d2fba785adccaf5899339923aba1 Mon Sep 17 00:00:00 2001 From: Pablo Brasero Date: Fri, 3 Oct 2025 12:05:15 +0100 Subject: [PATCH] DRY up cookie handling --- app/assets/javascripts/index.js | 8 ++++---- app/assets/javascripts/index/directions.js | 6 +++--- app/assets/javascripts/index/new_note.js | 4 ++-- app/assets/javascripts/language_selector.js | 2 +- app/assets/javascripts/osm.js.erb | 4 +++- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 85288dca3..8f85669be 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -171,16 +171,16 @@ $(function () { map.getLayersCode(), map._object); - Cookies.set("_osm_location", OSM.locationCookie(map), { secure: true, expires: expiry, path: "/", samesite: "lax" }); + OSM.cookies.set("_osm_location", OSM.locationCookie(map), { expires: expiry }); }); - if (Cookies.get("_osm_welcome") !== "hide") { + if (OSM.cookies.get("_osm_welcome") !== "hide") { $(".welcome").removeAttr("hidden"); } $(".welcome .btn-close").on("click", function () { $(".welcome").hide(); - Cookies.set("_osm_welcome", "hide", { secure: true, expires: expiry, path: "/", samesite: "lax" }); + OSM.cookies.set("_osm_welcome", "hide", { expires: expiry }); }); const bannerExpiry = new Date(); @@ -191,7 +191,7 @@ $(function () { $("#banner").hide(); e.preventDefault(); if (cookieId) { - Cookies.set(cookieId, "hide", { secure: true, expires: bannerExpiry, path: "/", samesite: "lax" }); + OSM.cookies.set(cookieId, "hide", { expires: bannerExpiry }); } }); diff --git a/app/assets/javascripts/index/directions.js b/app/assets/javascripts/index/directions.js index 463e11d69..0c0353c92 100644 --- a/app/assets/javascripts/index/directions.js +++ b/app/assets/javascripts/index/directions.js @@ -137,17 +137,17 @@ OSM.Directions = function (map) { } setEngine("fossgis_osrm_car"); - setEngine(Cookies.get("_osm_directions_engine")); + setEngine(OSM.cookies.get("_osm_directions_engine")); modeGroup.on("change", "input[name='modes']", function (e) { setEngine(chosenEngine.provider + "_" + e.target.value); - Cookies.set("_osm_directions_engine", chosenEngine.id, { secure: true, expires: expiry, path: "/", samesite: "lax" }); + OSM.cookies.set("_osm_directions_engine", chosenEngine.id, { expires: expiry }); getRoute(true, true); }); select.on("change", function (e) { setEngine(e.target.value + "_" + chosenEngine.mode); - Cookies.set("_osm_directions_engine", chosenEngine.id, { secure: true, expires: expiry, path: "/", samesite: "lax" }); + OSM.cookies.set("_osm_directions_engine", chosenEngine.id, { expires: expiry }); getRoute(true, true); }); diff --git a/app/assets/javascripts/index/new_note.js b/app/assets/javascripts/index/new_note.js index 220559c58..a126b7100 100644 --- a/app/assets/javascripts/index/new_note.js +++ b/app/assets/javascripts/index/new_note.js @@ -146,8 +146,8 @@ OSM.NewNote = function (map) { createNote(location, text, (feature) => { if (typeof OSM.user === "undefined") { - const anonymousNotesCount = Number(Cookies.get("_osm_anonymous_notes_count")) || 0; - Cookies.set("_osm_anonymous_notes_count", anonymousNotesCount + 1, { secure: true, expires: 30, path: "/", samesite: "lax" }); + const anonymousNotesCount = Number(OSM.cookies.get("_osm_anonymous_notes_count")) || 0; + OSM.cookies.set("_osm_anonymous_notes_count", anonymousNotesCount + 1, { expires: 30 }); } content.find("textarea").val(""); addCreatedNoteMarker(feature); diff --git a/app/assets/javascripts/language_selector.js b/app/assets/javascripts/language_selector.js index 105c19f52..8380c1b0e 100644 --- a/app/assets/javascripts/language_selector.js +++ b/app/assets/javascripts/language_selector.js @@ -8,7 +8,7 @@ $(document).on("click", "#select_language_dialog [data-language-code]", function form.elements.language.value = code; form.submit(); } else { - Cookies.set("_osm_locale", code, { secure: true, path: "/", samesite: "lax" }); + OSM.cookies.set("_osm_locale", code); location.reload(); } }); diff --git a/app/assets/javascripts/osm.js.erb b/app/assets/javascripts/osm.js.erb index 0287590fc..d9b2530bf 100644 --- a/app/assets/javascripts/osm.js.erb +++ b/app/assets/javascripts/osm.js.erb @@ -27,6 +27,8 @@ OSM = { end.to_json %>, + cookies: Cookies.withAttributes({ path: "/", samesite: "lax", secure: true }), + DEFAULT_LOCALE: <%= I18n.default_locale.to_json %>, LAYER_DEFINITIONS: <%= MapLayers::full_definitions("config/layers.yml", :legends => "config/legend.yml").to_json %>, @@ -73,7 +75,7 @@ OSM = { const hash = OSM.parseHash(); - const loc = Cookies.get("_osm_location")?.split("|"); + const loc = OSM.cookies.get("_osm_location")?.split("|"); function bboxToLatLngBounds({ minlon, minlat, maxlon, maxlat }) { return L.latLngBounds([minlat, minlon], [maxlat, maxlon]); -- 2.39.5