From cf12c00fa1445efbb033c88c5d89090a059b7608 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Gerardy Date: Tue, 6 Dec 2016 21:34:24 +0100 Subject: [PATCH 1/2] [router] don't mutate RouteResolvers, move a branch out of redraw --- api/router.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/api/router.js b/api/router.js index 1eace6b0..d1452782 100644 --- a/api/router.js +++ b/api/router.js @@ -8,16 +8,16 @@ module.exports = function($window, redrawService) { var routeService = coreRouter($window) var identity = function(v) {return v} - var resolver, component, attrs, currentPath, resolve + var render, component, attrs, currentPath, resolve var route = function(root, defaultRoute, routes) { if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined") var update = function(routeResolver, comp, params, path) { - resolver = routeResolver, component = comp, attrs = params, currentPath = path, resolve = null - resolver.render = routeResolver.render || identity - render() + component = comp || "div", attrs = params, currentPath = path, resolve = null + render = (routeResolver.render || identity).bind(routeResolver) + run() } - var render = function() { - if (resolver != null) redrawService.render(root, resolver.render(Vnode(component || "div", attrs.key, attrs))) + var run = function() { + if (render != null) redrawService.render(root, render(Vnode(component, attrs.key, attrs))) } routeService.defineRoutes(routes, function(payload, params, path) { if (payload.view) update({}, payload, params, path) @@ -38,7 +38,7 @@ module.exports = function($window, redrawService) { }, function() { routeService.setPath(defaultRoute) }) - redrawService.subscribe(root, render) + redrawService.subscribe(root, run) } route.set = routeService.setPath route.get = function() {return currentPath} From 650f7c4f3b7dce3e32b5e6795c066d090026eb7a Mon Sep 17 00:00:00 2001 From: Pierre-Yves Gerardy Date: Tue, 6 Dec 2016 21:44:49 +0100 Subject: [PATCH 2/2] [router] remove logic made redundant by promise use --- api/router.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/api/router.js b/api/router.js index d1452782..04b5d091 100644 --- a/api/router.js +++ b/api/router.js @@ -8,11 +8,11 @@ module.exports = function($window, redrawService) { var routeService = coreRouter($window) var identity = function(v) {return v} - var render, component, attrs, currentPath, resolve + var render, component, attrs, currentPath var route = function(root, defaultRoute, routes) { if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined") var update = function(routeResolver, comp, params, path) { - component = comp || "div", attrs = params, currentPath = path, resolve = null + component = comp || "div", attrs = params, currentPath = path render = (routeResolver.render || identity).bind(routeResolver) run() } @@ -23,15 +23,9 @@ module.exports = function($window, redrawService) { if (payload.view) update({}, payload, params, path) else { if (payload.onmatch) { - if (resolve != null) update(payload, component, params, path) - else { - resolve = function(resolved) { - update(payload, resolved, params, path) - } - Promise.resolve(payload.onmatch(params, path)).then(function(resolved) { - if (resolve != null) resolve(resolved) - }) - } + Promise.resolve(payload.onmatch(params, path)).then(function(resolved) { + update(payload, resolved, params, path) + }) } else update(payload, "div", params, path) }