From 828581d2d1ba02d11c8906ee82ed241c25c2e9c3 Mon Sep 17 00:00:00 2001 From: Pedro Belo Date: Thu, 24 Mar 2016 14:53:55 -0700 Subject: [PATCH 1/2] wrap these too --- src/Navigation.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Navigation.js b/src/Navigation.js index 3258dccea72..b43bfc24dd3 100644 --- a/src/Navigation.js +++ b/src/Navigation.js @@ -67,12 +67,20 @@ function dismissModal(params = {}) { return platformSpecific.dismissModal(params); } +function startTabBasedApp(params) { + return platformSpecific.startTabBasedApp(params); +} + +function startSingleScreenApp(params) { + return platformSpecific.startSingleScreenApp(params); +} + export default { registerScreen, getRegisteredScreen, registerComponent, showModal, dismissModal, - startTabBasedApp: platformSpecific.startTabBasedApp, - startSingleScreenApp: platformSpecific.startSingleScreenApp + startTabBasedApp, + startSingleScreenApp } From ff815da7c956c6ff5f2e057c4234926873e70ebe Mon Sep 17 00:00:00 2001 From: Pedro Belo Date: Thu, 24 Mar 2016 15:24:54 -0700 Subject: [PATCH 2/2] allow for a callback to resolve the route params lazily so you can further customize routes without changing every caller. can be used for default navigator styles/etc --- src/Navigation.js | 9 +++++++++ src/Screen.js | 18 +++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/Navigation.js b/src/Navigation.js index b43bfc24dd3..1d7408bdb93 100644 --- a/src/Navigation.js +++ b/src/Navigation.js @@ -3,6 +3,12 @@ import platformSpecific from './platformSpecific'; import Screen from './Screen'; const registeredScreens = {}; +const _routeResolver = null; + +function resolveRoute(params) { + if (!_routeResolver) return params; + return _routeResolver(params); +} function registerScreen(screenID, generator) { registeredScreens[screenID] = generator; @@ -68,14 +74,17 @@ function dismissModal(params = {}) { } function startTabBasedApp(params) { + if (params.routeResolver) _routeResolver = params.routeResolver; return platformSpecific.startTabBasedApp(params); } function startSingleScreenApp(params) { + if (params.routeResolver) _routeResolver = params.routeResolver; return platformSpecific.startSingleScreenApp(params); } export default { + resolveRoute, registerScreen, getRegisteredScreen, registerComponent, diff --git a/src/Screen.js b/src/Screen.js index 27370f91303..ffb44077ceb 100644 --- a/src/Screen.js +++ b/src/Screen.js @@ -12,31 +12,31 @@ class Navigator { this.navigatorEventSubscription = null; } push(params = {}) { - return platformSpecific.navigatorPush(this, params); + return platformSpecific.navigatorPush(this, Navigation.resolveRoute(params)); } pop(params = {}) { - return platformSpecific.navigatorPop(this, params); + return platformSpecific.navigatorPop(this, Navigation.resolveRoute(params)); } popToRoot(params = {}) { - return platformSpecific.navigatorPopToRoot(this, params); + return platformSpecific.navigatorPopToRoot(this, Navigation.resolveRoute(params)); } resetTo(params = {}) { - return platformSpecific.navigatorResetTo(this, params); + return platformSpecific.navigatorResetTo(this, Navigation.resolveRoute(params)); } showModal(params = {}) { - return Navigation.showModal(params); + return Navigation.showModal(Navigation.resolveRoute(params)); } dismissModal(params = {}) { - return Navigation.dismissModal(params); + return Navigation.dismissModal(Navigation.resolveRoute(params)); } setButtons(params = {}) { - return platformSpecific.navigatorSetButtons(this, this.navigatorEventID, params); + return platformSpecific.navigatorSetButtons(this, this.navigatorEventID, Navigation.resolveRoute(params)); } setTitle(params = {}) { - return platformSpecific.navigatorSetTitle(this, params); + return platformSpecific.navigatorSetTitle(this, Navigation.resolveRoute(params)); } toggleDrawer(params = {}) { - return platformSpecific.navigatorToggleDrawer(this, params); + return platformSpecific.navigatorToggleDrawer(this, Navigation.resolveRoute(params)); } setOnNavigatorEvent(callback) { this.navigatorEventHandler = callback;