From 2f261feadbaf95a5b35275a224d82f9afef3d52d Mon Sep 17 00:00:00 2001 From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Sat, 18 Jul 2026 23:48:14 +0200 Subject: [PATCH] Promise cleanup Co-authored-by: Pablo Brasero --- app/assets/javascripts/index.js | 3 ++- app/assets/javascripts/index_modules/changeset.js | 8 +++----- .../javascripts/index_modules/directions.js | 6 +----- app/assets/javascripts/index_modules/element.js | 15 ++++++--------- app/assets/javascripts/index_modules/note.js | 6 ++---- 5 files changed, 14 insertions(+), 24 deletions(-) diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 18a63c949..1ec154b85 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -33,7 +33,8 @@ $(function () { // Prevent caching the XHR response as a full-page URL // https://github.com/openstreetmap/openstreetmap-website/issues/5663 - const xhrPath = path + `${path.includes("?") ? "&" : "?"}xhr=1`; + const queryParamSeparator = path.includes("?") ? "&" : "?"; + const xhrPath = `${path}${queryParamSeparator}xhr=1`; $("#sidebar_content") .empty(); diff --git a/app/assets/javascripts/index_modules/changeset.js b/app/assets/javascripts/index_modules/changeset.js index caba9e82b..7887640d3 100644 --- a/app/assets/javascripts/index_modules/changeset.js +++ b/app/assets/javascripts/index_modules/changeset.js @@ -12,7 +12,7 @@ export default function (map) { page.pushstate = page.popstate = function (path) { OSM.loadSidebarContent(path) - .then(() => page.load()); + .then(page.load); }; page.load = function () { @@ -52,10 +52,8 @@ export default function (map) { throw new Error(text); }); }) - .then(() => { - OSM.loadSidebarContent(location.pathname) - .then(page.load); - }) + .then(() => OSM.loadSidebarContent(location.pathname)) + .then(page.load) .catch(error => { content.find("button[data-method][data-url]").prop("disabled", false); content.find("#comment-error") diff --git a/app/assets/javascripts/index_modules/directions.js b/app/assets/javascripts/index_modules/directions.js index 3f6b71fe7..e9d6325eb 100644 --- a/app/assets/javascripts/index_modules/directions.js +++ b/app/assets/javascripts/index_modules/directions.js @@ -250,11 +250,7 @@ export default function (map) { return Promise.resolve(); } - if (sidebarReadyPromise) return sidebarReadyPromise; - - sidebarReadyPromise = OSM.loadSidebarContent("/directions"); - - return sidebarReadyPromise; + return sidebarReadyPromise ??= OSM.loadSidebarContent("/directions"); } page.pushstate = page.popstate = page.load = function () { diff --git a/app/assets/javascripts/index_modules/element.js b/app/assets/javascripts/index_modules/element.js index bbe5537f1..fff0cd204 100644 --- a/app/assets/javascripts/index_modules/element.js +++ b/app/assets/javascripts/index_modules/element.js @@ -8,15 +8,12 @@ export function element(type) { const page = {}; page.pushstate = page.popstate = function (path, id, version) { - OSM.loadSidebarContent(path).then(function () { - page._addObject(type, id, version); - $(".numbered_pagination").trigger("numbered_pagination:enable"); - abortController = new AbortController(); - }); + OSM.loadSidebarContent(path) + .then(() => page.load(path, id, version, true)); }; - page.load = function (path, id, version) { - page._addObject(type, id, version, true); + page.load = function (path, id, version, keepViewport) { + page._addObject(type, id, version, keepViewport); $(".numbered_pagination").trigger("numbered_pagination:enable"); abortController = new AbortController(); }; @@ -38,11 +35,11 @@ export function mappedElement(type) { return function (map) { const page = element(type)(map); - page._addObject = function (type, id, version, center) { + page._addObject = function (type, id, version, keepViewport) { const hashParams = OSM.parseHash(); map.addObject({ type: type, id: parseInt(id, 10), version: version && parseInt(version, 10) }, function (bounds) { if (!hashParams.center && bounds.isValid() && - (center || !map.getBounds().contains(bounds))) { + (!keepViewport || !map.getBounds().contains(bounds))) { OSM.router.withoutMoveListener(function () { map.fitBounds(bounds); }); diff --git a/app/assets/javascripts/index_modules/note.js b/app/assets/javascripts/index_modules/note.js index a35f67eb2..4303c3c34 100644 --- a/app/assets/javascripts/index_modules/note.js +++ b/app/assets/javascripts/index_modules/note.js @@ -41,10 +41,8 @@ export default function (map) { throw new Error(text || `HTTP Error ${response.status} ${response.statusText}`); }); }) - .then(() => { - OSM.loadSidebarContent(path) - .then(() => initialize(path, id, false)); - }) + .then(() => OSM.loadSidebarContent(path)) + .then(() => initialize(path, id, false)) .catch(error => { content.find("#comment-error") .text(error.message) -- 2.47.3