From 44a96a82ef2c4955e79b55213f32d5697716746c Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov <38059171+askvortsov1@users.noreply.github.com> Date: Fri, 2 Oct 2020 17:10:38 -0400 Subject: [PATCH] Minor improvements to onNewRoute (#2328) - Call onNewRoute when page changed with same component in DiscussionPage and UserPage - Make app.previous and app.current changed in onNewRoute, not in oninit. This way, when the route is changed, but still handled by the same component, a new PageState object will still be created. --- js/src/common/components/Page.js | 6 ++---- js/src/forum/components/DiscussionPage.js | 1 + js/src/forum/components/UserPage.js | 2 ++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/js/src/common/components/Page.js b/js/src/common/components/Page.js index 917aad5af..a0bc67039 100644 --- a/js/src/common/components/Page.js +++ b/js/src/common/components/Page.js @@ -10,9 +10,6 @@ export default class Page extends Component { oninit(vnode) { super.oninit(vnode); - app.previous = app.current; - app.current = new PageState(this.constructor); - this.onNewRoute(); app.drawer.hide(); @@ -33,7 +30,8 @@ export default class Page extends Component { * adjust the current route name. */ onNewRoute() { - app.current.set('routeName', this.attrs.routeName); + app.previous = app.current; + app.current = new PageState(this.constructor, { routeName: this.attrs.routeName }); } oncreate(vnode) { diff --git a/js/src/forum/components/DiscussionPage.js b/js/src/forum/components/DiscussionPage.js index 6fc97119e..d54e15a48 100644 --- a/js/src/forum/components/DiscussionPage.js +++ b/js/src/forum/components/DiscussionPage.js @@ -99,6 +99,7 @@ export default class DiscussionPage extends Page { super.onbeforeupdate(vnode); if (m.route.get() !== this.prevRoute) { + this.onNewRoute(); this.prevRoute = m.route.get(); // If we have routed to the same discussion as we were viewing previously, diff --git a/js/src/forum/components/UserPage.js b/js/src/forum/components/UserPage.js index 7ac08cb72..1171342f1 100644 --- a/js/src/forum/components/UserPage.js +++ b/js/src/forum/components/UserPage.js @@ -34,6 +34,8 @@ export default class UserPage extends Page { onbeforeupdate() { const currUsername = m.route.param('username'); if (currUsername !== this.prevUsername) { + this.onNewRoute(); + this.prevUsername = currUsername; this.loadUser(currUsername);