From 5d93d29eb775374c7c3fd24b184c177009481243 Mon Sep 17 00:00:00 2001 From: Garret Alfert Date: Sat, 21 Jan 2017 03:27:07 +0100 Subject: [PATCH 1/3] Use setupController instead of activate hook This fixes an exception when switching between routes with same name but different parameter. --- addon/ext/route.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addon/ext/route.js b/addon/ext/route.js index efc60571..4728b096 100644 --- a/addon/ext/route.js +++ b/addon/ext/route.js @@ -3,7 +3,7 @@ import Ember from 'ember'; const { Mixin } = Ember; export default Mixin.create({ - activate() { + setupController() { this.get('perfService').routeActivated(this); this._super(...arguments); }, From 798c7c009965655ebcf5dcd800ba49454fb6fe32 Mon Sep 17 00:00:00 2001 From: Garret Alfert Date: Sat, 21 Jan 2017 04:09:26 +0100 Subject: [PATCH 2/3] Fix exception when using queryParams --- addon/services/ember-perf.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/addon/services/ember-perf.js b/addon/services/ember-perf.js index 5ff0f685..a2ae9ac4 100644 --- a/addon/services/ember-perf.js +++ b/addon/services/ember-perf.js @@ -62,7 +62,9 @@ export default Base.extend(Evented, { return; } transitionInfo.promise._emberPerfTransitionId = transitionCounter++; - let transitionRoute = transitionInfo.promise.targetName || get(transitionInfo.promise, 'intent.name'); + let transitionRoute = transitionInfo.promise.targetName || + get(transitionInfo.promise, 'intent.name') || + get(transitionInfo.promise, 'state.handlerInfos.lastObject.name'); let transitionCtxt = get(transitionInfo.promise, 'intent.contexts') ? (get(transitionInfo.promise, 'intent.contexts') || [])[0] : null; let transitionUrl = get(transitionInfo.promise, 'intent.url'); assert('Must have at least a route name', transitionRoute); @@ -71,7 +73,12 @@ export default Base.extend(Evented, { if (transitionCtxt) { transitionUrl = transitionInfo.promise.router.generate(transitionRoute, transitionCtxt); } else { - transitionUrl = transitionInfo.promise.router.generate(transitionRoute); + let queryParams = get(transitionInfo, 'promise.state.queryParams'); + if (queryParams) { + transitionUrl = transitionInfo.promise.router.generate(transitionRoute, { queryParams }); + } else { + transitionUrl = transitionInfo.promise.router.generate(transitionRoute); + } } } this.renderData = this.transitionData = new TransitionData({ From 23aa7de6b3eedbe60c7002dcf1d1522494d13d89 Mon Sep 17 00:00:00 2001 From: Garret Alfert Date: Sat, 21 Jan 2017 18:01:38 +0100 Subject: [PATCH 3/3] Fix error when switching to routes with multiple params This uses all the available contexts to generate the URL instead of just the first one. --- addon/services/ember-perf.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addon/services/ember-perf.js b/addon/services/ember-perf.js index a2ae9ac4..c36e9265 100644 --- a/addon/services/ember-perf.js +++ b/addon/services/ember-perf.js @@ -65,13 +65,13 @@ export default Base.extend(Evented, { let transitionRoute = transitionInfo.promise.targetName || get(transitionInfo.promise, 'intent.name') || get(transitionInfo.promise, 'state.handlerInfos.lastObject.name'); - let transitionCtxt = get(transitionInfo.promise, 'intent.contexts') ? (get(transitionInfo.promise, 'intent.contexts') || [])[0] : null; + let transitionCtxt = get(transitionInfo.promise, 'intent.contexts') || null; let transitionUrl = get(transitionInfo.promise, 'intent.url'); assert('Must have at least a route name', transitionRoute); if (!transitionUrl) { if (transitionCtxt) { - transitionUrl = transitionInfo.promise.router.generate(transitionRoute, transitionCtxt); + transitionUrl = transitionInfo.promise.router.generate(transitionRoute, ...transitionCtxt); } else { let queryParams = get(transitionInfo, 'promise.state.queryParams'); if (queryParams) { @@ -186,4 +186,4 @@ export default Base.extend(Evented, { console.groupEnd(); } }) -}); \ No newline at end of file +});