From 60cfcce2ca717b8d718e5b736b8968d0f6e0624f Mon Sep 17 00:00:00 2001 From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Tue, 5 Aug 2025 23:02:53 +0200 Subject: [PATCH] Instantiate js controllers only once needed --- app/assets/javascripts/router.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/router.js b/app/assets/javascripts/router.js index ffc4f2fea..ed833c625 100644 --- a/app/assets/javascripts/router.js +++ b/app/assets/javascripts/router.js @@ -53,6 +53,7 @@ OSM.Router = function (map, rts) { const splatParam = /\*\w+/g; function Route(path, controller) { + let controllerInstance = null; const regexp = new RegExp("^" + path.replace(escapeRegExp, "\\$&") .replace(optionalParam, "(?:$1)?") @@ -76,14 +77,16 @@ OSM.Router = function (map, rts) { }); } - return controller[action]?.(...params, ...args); + if (!controllerInstance) controllerInstance = controller(map); + + return controllerInstance[action]?.(...params, ...args); }; return route; } const routes = Object.entries(rts) - .map(([path, controller]) => new Route(path, controller(map))); + .map(([path, controller]) => new Route(path, controller)); routes.recognize = function (path) { for (const route of this) { -- 2.39.5