Skip to content

Commit bcd04ba

Browse files
daviscabralaksonov
authored andcommitted
Add listeners to navigation (as part of react-navigation 1.0.0 breaking changes) (#3032)
* [#2865] Add listeners to navigation (as part of react-navigation 1.0.0 breaking changes) * Bump version
1 parent 21117ce commit bcd04ba

File tree

12 files changed

+10365
-1323
lines changed

12 files changed

+10365
-1323
lines changed

Example/package-lock.json

Lines changed: 8510 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Example/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@
1212
"mobx": "^3.2.1",
1313
"mobx-react": "^4.2.1",
1414
"prop-types": "^15.5.10",
15-
"react": "16.3.0-alpha.1",
16-
"react-native": "0.54.2",
15+
"react": "16.3.2",
16+
"react-native": "0.55.4",
1717
"react-native-button": "^2.0.0",
1818
"react-native-message-bar": "^1.6.0",
1919
"react-native-router-flux": "4.0.0-beta.30",
2020
"react-navigation": "1.5.8"
2121
},
2222
"devDependencies": {
23-
"babel-jest": "20.0.3",
24-
"babel-preset-react-native": "2.0.0",
23+
"babel-jest": "20.1.0-echo.1",
24+
"babel-preset-react-native": "2.1.0",
2525
"babel-preset-react-native-stage-0": "^1.0.1",
26-
"jest": "20.0.4",
27-
"react-test-renderer": "16.0.0-alpha.12"
26+
"jest": "20.1.0-echo.1",
27+
"react-test-renderer": "16.3.2"
2828
},
2929
"jest": {
3030
"preset": "react-native",

Example/yarn.lock

Lines changed: 1748 additions & 1267 deletions
Large diffs are not rendered by default.

dist/LightboxNavigator.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ Object.defineProperty(exports,"__esModule",{value:true});var _jsxFileName='src/L
22

33
var _react=require('react');var _react2=_interopRequireDefault(_react);
44
var _reactNavigation=require('react-navigation');
5-
var _reactNative=require('react-native');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}
5+
var _reactNative=require('react-native');
6+
var _navigationStore=require('./navigationStore');var _navigationStore2=_interopRequireDefault(_navigationStore);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}
67

78
var LightboxNavigator=function LightboxNavigator(
89
routeConfigs)
@@ -30,9 +31,9 @@ initialIndex=i;
3031
}
3132
var Popup=index!==initialIndex?routeConfigs[routes[index].routeName].screen:null;
3233

33-
return _react2.default.createElement(_reactNative.View,{style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:33}},
34-
_react2.default.createElement(Component,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:dispatch,state:routes[initialIndex]}),__source:{fileName:_jsxFileName,lineNumber:34}}),
35-
Popup&&_react2.default.createElement(Popup,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:dispatch,state:routes[index]}),__source:{fileName:_jsxFileName,lineNumber:35}}));
34+
return _react2.default.createElement(_reactNative.View,{style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:34}},
35+
_react2.default.createElement(Component,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:dispatch,state:routes[initialIndex],addListener:_navigationStore2.default.addListener}),__source:{fileName:_jsxFileName,lineNumber:35}}),
36+
Popup&&_react2.default.createElement(Popup,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:dispatch,state:routes[index],addListener:_navigationStore2.default.addListener}),__source:{fileName:_jsxFileName,lineNumber:36}}));
3637

3738
});
3839

dist/OverlayNavigator.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ Object.defineProperty(exports,"__esModule",{value:true});var _jsxFileName='src/O
22

33
var _react=require('react');var _react2=_interopRequireDefault(_react);
44
var _reactNavigation=require('react-navigation');
5-
var _reactNative=require('react-native');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}
5+
var _reactNative=require('react-native');
6+
var _navigationStore=require('./navigationStore');var _navigationStore2=_interopRequireDefault(_navigationStore);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}
67

78
var OverlayNavigator=function OverlayNavigator(
89
routeConfigs)
@@ -36,12 +37,12 @@ for(var _i=0;_i<tabsConfig.order.length;_i++){
3637
var routeName=tabsConfig.order[_i];
3738
if(initialRouteName!==routeName){
3839
var Overlay=routeConfigs[routeName].screen;
39-
overlays.push(_react2.default.createElement(Overlay,{key:routeName,navigation:{dispatch:dispatch,state:routesMap[routeName]},__source:{fileName:_jsxFileName,lineNumber:39}}));
40+
overlays.push(_react2.default.createElement(Overlay,{key:routeName,navigation:{dispatch:dispatch,state:routesMap[routeName],addListener:_navigationStore2.default.addListener},__source:{fileName:_jsxFileName,lineNumber:40}}));
4041
}
4142
}
4243
var ContentComponent=tabsConfig.contentComponent||_reactNative.View;
43-
return _react2.default.createElement(ContentComponent,{style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:43}},
44-
_react2.default.createElement(Component,{navigation:{dispatch:dispatch,state:routes[initialIndex]},__source:{fileName:_jsxFileName,lineNumber:44}}),
44+
return _react2.default.createElement(ContentComponent,{style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:44}},
45+
_react2.default.createElement(Component,{navigation:{dispatch:dispatch,state:routes[initialIndex],addListener:_navigationStore2.default.addListener},__source:{fileName:_jsxFileName,lineNumber:45}}),
4546
overlays);
4647

4748
});

dist/Router.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ _navigationStore2.default[actionKey](params);
6969
{
7070
var AppNavigator=this.props.navigator;
7171
return(
72-
_react2.default.createElement(AppNavigator,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:_navigationStore2.default.dispatch,state:_navigationStore2.default.state}),__source:{fileName:_jsxFileName,lineNumber:72}}));
72+
_react2.default.createElement(AppNavigator,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:_navigationStore2.default.dispatch,state:_navigationStore2.default.state,addListener:_navigationStore2.default.addListener}),__source:{fileName:_jsxFileName,lineNumber:72}}));
7373

7474
}}]);return App;}(_react2.default.Component),_class2.propTypes={navigator:_propTypes2.default.func,backAndroidHandler:_propTypes2.default.func,uriPrefix:_propTypes2.default.string,onDeepLink:_propTypes2.default.func},_temp2))||_class;
7575

@@ -88,7 +88,7 @@ if(dispatch&&state){
8888

8989
_navigationStore2.default.setState(state);
9090
_navigationStore2.default.dispatch=dispatch;
91-
return _react2.default.createElement(AppNavigator,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:dispatch,state:state}),uriPrefix:uriPrefix,__source:{fileName:_jsxFileName,lineNumber:91}});
91+
return _react2.default.createElement(AppNavigator,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:dispatch,state:state,addListener:_navigationStore2.default.addListener}),uriPrefix:uriPrefix,__source:{fileName:_jsxFileName,lineNumber:91}});
9292
}
9393
return _react2.default.createElement(App,_extends({},props,{onDeepLink:onDeepLink,navigator:AppNavigator,uriPrefix:uriPrefix,__source:{fileName:_jsxFileName,lineNumber:93}}));
9494
};

dist/navigationStore.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,4 +1069,7 @@ params:params})]}));
10691069

10701070

10711071

1072+
};}_createClass(NavigationStore,[{key:'state',get:function get(){var scene=this.currentScene;var params=this.currentParams;return this._state;}}]);return NavigationStore;}(),(_descriptor=_applyDecoratedDescriptor(_class2.prototype,'currentScene',[_mobx.observable],{enumerable:true,initializer:function initializer(){return'';}}),_descriptor2=_applyDecoratedDescriptor(_class2.prototype,'prevScene',[_mobx.observable],{enumerable:true,initializer:function initializer(){return'';}}),_descriptor3=_applyDecoratedDescriptor(_class2.prototype,'currentParams',[_mobx.observable],{enumerable:true,initializer:null}),_descriptor4=_applyDecoratedDescriptor(_class2.prototype,'setState',[_mobx.action],{enumerable:true,initializer:function initializer(){var _this3=this;return function _callee(newState){var state,currentScene,exitHandler,res,handler,_success,_failure,params,_res;return regeneratorRuntime.async(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(newState){_context.next=2;break;}return _context.abrupt('return');case 2:state=(0,_State.getActiveState)(newState);if(!((0,_lodash2.default)(state.params,_this3._currentParams)&&state.routeName===_this3.currentScene)){_context.next=5;break;}return _context.abrupt('return');case 5:currentScene=_this3.currentScene;_this3._state=newState;_this3.currentScene=state.routeName;_this3.prevScene=currentScene;_this3.currentParams=state.params;_this3._currentParams=state.params;if(!(currentScene!==_this3.currentScene&&_this3.currentScene!=='DrawerOpen'&&_this3.currentScene!=='DrawerClose')){_context.next=32;break;}_this3.dispatch({type:ActionConst.BLUR,routeName:currentScene});exitHandler=_this3[currentScene+_Util.OnExit];if(exitHandler){try{res=exitHandler();if(res instanceof Promise){res.then(defaultSuccess,defaultFailure);}}catch(e){console.error('Error during onExit handler:',e);}}_this3.dispatch({type:ActionConst.FOCUS,routeName:_this3.currentScene,params:_this3._currentParams});if(!_this3.states[_this3.currentScene]){_context.next=32;break;}handler=_this3[_this3.currentScene+_Util.OnEnter];_success=_this3.states[_this3.currentScene].success||defaultSuccess;_failure=_this3.states[_this3.currentScene].failure||defaultFailure;if(!handler){_context.next=32;break;}_context.prev=21;params=(0,_State.getActiveState)(_this3._state).params;_context.next=25;return regeneratorRuntime.awrap(handler(params));case 25:_res=_context.sent;if(_res){_success(_res);}else{_failure();}_context.next=32;break;case 29:_context.prev=29;_context.t0=_context['catch'](21);_failure({error:_context.t0.message});case 32:case'end':return _context.stop();}}},null,_this3,[[21,29]]);};}})),_class2);exports.default=
1073+
1074+
10721075
new NavigationStore();

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-router-flux",
3-
"version": "4.0.0-beta.30",
3+
"version": "4.0.0-beta.31",
44
"description": "React Native Router using Flux architecture",
55
"repository": {
66
"type": "git",

src/LightboxNavigator.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import React from 'react';
44
import { addNavigationHelpers, createNavigationContainer, createNavigator, TabRouter } from 'react-navigation';
55
import { View } from 'react-native';
6+
import navigationStore from './navigationStore';
67

78
const LightboxNavigator = (
89
routeConfigs,
@@ -31,8 +32,8 @@ const LightboxNavigator = (
3132
const Popup = index !== initialIndex ? routeConfigs[routes[index].routeName].screen : null;
3233

3334
return (<View style={{ flex: 1 }}>
34-
<Component navigation={addNavigationHelpers({ dispatch, state: routes[initialIndex] })} />
35-
{Popup && <Popup navigation={addNavigationHelpers({ dispatch, state: routes[index] })} />}
35+
<Component navigation={addNavigationHelpers({ dispatch, state: routes[initialIndex], addListener: navigationStore.addListener })} />
36+
{Popup && <Popup navigation={addNavigationHelpers({ dispatch, state: routes[index], addListener: navigationStore.addListener })} />}
3637
</View>);
3738
});
3839

src/OverlayNavigator.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import React from 'react';
44
import { createNavigationContainer, createNavigator, TabRouter } from 'react-navigation';
55
import { View } from 'react-native';
6+
import navigationStore from './navigationStore';
67

78
const OverlayNavigator = (
89
routeConfigs,
@@ -36,12 +37,12 @@ const OverlayNavigator = (
3637
const routeName = tabsConfig.order[i];
3738
if (initialRouteName !== routeName) {
3839
const Overlay = routeConfigs[routeName].screen;
39-
overlays.push(<Overlay key={routeName} navigation={{ dispatch, state: routesMap[routeName] }} />);
40+
overlays.push(<Overlay key={routeName} navigation={{ dispatch, state: routesMap[routeName], addListener: navigationStore.addListener }} />);
4041
}
4142
}
4243
const ContentComponent = tabsConfig.contentComponent || View;
4344
return (<ContentComponent style={{ flex: 1 }}>
44-
<Component navigation={{ dispatch, state: routes[initialIndex] }} />
45+
<Component navigation={{ dispatch, state: routes[initialIndex], addListener: navigationStore.addListener }} />
4546
{overlays}
4647
</ContentComponent>);
4748
});

0 commit comments

Comments
 (0)