Skip to content

Commit 6e0a297

Browse files
author
aksonov
committed
Allow usage of ActionConst constants for Scene type for better backward-compartibility with v3 (#2079)
1 parent d4fff50 commit 6e0a297

File tree

6 files changed

+57
-69
lines changed

6 files changed

+57
-69
lines changed

Example/Example.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Example extends Component {
5858
<Scene key="register" back>
5959
<Scene key="_register" component={Register} title="Register" />
6060
<Scene key="register2" component={Register} title="Register2" />
61-
<Scene key="home" component={Home} title="Replace" type='replace' />
61+
<Scene key="home" component={Home} title="Replace" type={ActionConst.REPLACE} />
6262
</Scene>
6363
<Scene key="launch" component={Launch} title="Launch" initial />
6464
<Scene

dist/Router.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ var RightNavBarButton=void 0;
1313
var LeftNavBarButton=void 0;
1414
var reservedKeys=[
1515
'children',
16+
'execute',
17+
'popTo',
1618
'navigate',
19+
'replace',
1720
'currentState',
1821
'refresh',
1922
'dispatch',
@@ -86,15 +89,15 @@ headerStyle:getValue(navigationParams.headerStyle||headerStyle||navigationBarSty
8689
headerBackImage:navigationParams.backButtonImage||backButtonImage});
8790

8891
if(NavBar){
89-
res.header=function(data){return _react2.default.createElement(NavBar,_extends({navigation:navigation},state,data,{__source:{fileName:_jsxFileName,lineNumber:89}}));};
92+
res.header=function(data){return _react2.default.createElement(NavBar,_extends({navigation:navigation},state,data,{__source:{fileName:_jsxFileName,lineNumber:92}}));};
9093
}
9194

9295
if(panHandlers===null){
9396
res.gesturesEnabled=false;
9497
}
9598

9699
if(navigationBarTitleImage){
97-
res.headerTitle=_react2.default.createElement(_reactNative.Image,{source:navigationBarTitleImage,style:navigationBarTitleImageStyle,__source:{fileName:_jsxFileName,lineNumber:97}});
100+
res.headerTitle=_react2.default.createElement(_reactNative.Image,{source:navigationBarTitleImage,style:navigationBarTitleImageStyle,__source:{fileName:_jsxFileName,lineNumber:100}});
98101
}
99102

100103
if(tabBarLabel){
@@ -119,14 +122,14 @@ componentData[key]=component[key];
119122
if(rightButtonImage||rightTitle||params.renderRightButton||onRight||navigationParams.onRight||
120123
navigationParams.rightTitle||navigationParams.rightButtonImage||rightButtonTextStyle){
121124
res.headerRight=getValue(navigationParams.right||navigationParams.rightButton||params.renderRightButton,_extends({},
122-
navigationParams,screenProps))||_react2.default.createElement(RightNavBarButton,_extends({},params,navigationParams,componentData,{__source:{fileName:_jsxFileName,lineNumber:122}}));
125+
navigationParams,screenProps))||_react2.default.createElement(RightNavBarButton,_extends({},params,navigationParams,componentData,{__source:{fileName:_jsxFileName,lineNumber:125}}));
123126
}
124127

125128
if(leftButtonImage||backButtonImage||backTitle||leftTitle||params.renderLeftButton||leftButtonTextStyle||
126129
backButtonTextStyle||onLeft||navigationParams.leftTitle||navigationParams.onLeft||navigationParams.leftButtonImage||
127130
navigationParams.backButtonImage||navigationParams.backTitle){
128131
res.headerLeft=getValue(navigationParams.left||navigationParams.leftButton||params.renderLeftButton,_extends({},params,navigationParams,screenProps))||
129-
onLeft&&(leftTitle||navigationParams.leftTitle||leftButtonImage)&&_react2.default.createElement(LeftNavBarButton,_extends({},params,navigationParams,componentData,{__source:{fileName:_jsxFileName,lineNumber:129}}))||(
132+
onLeft&&(leftTitle||navigationParams.leftTitle||leftButtonImage)&&_react2.default.createElement(LeftNavBarButton,_extends({},params,navigationParams,componentData,{__source:{fileName:_jsxFileName,lineNumber:132}}))||(
130133
init?null:(0,_NavBar.renderBackButton)(_extends({},params,navigationParams,screenProps)));
131134
}
132135

@@ -154,7 +157,7 @@ return null;
154157
}
155158
var wrapper=wrapBy||function(props){return props;};
156159
return wrapper(function(_ref3){var navigation=_ref3.navigation,props=_objectWithoutProperties(_ref3,['navigation']);return(
157-
_react2.default.createElement(Component,_extends({},props,{navigation:navigation},navigation.state.params,{name:navigation.state.routeName,__source:{fileName:_jsxFileName,lineNumber:157}})));});
160+
_react2.default.createElement(Component,_extends({},props,{navigation:navigation},navigation.state.params,{name:navigation.state.routeName,__source:{fileName:_jsxFileName,lineNumber:160}})));});
158161
}var
159162

160163

@@ -184,7 +187,7 @@ return true;
184187
{
185188
var AppNavigator=this.props.navigator;
186189
return(
187-
_react2.default.createElement(AppNavigator,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:_navigationStore2.default.dispatch,state:_navigationStore2.default.state}),__source:{fileName:_jsxFileName,lineNumber:187}}));
190+
_react2.default.createElement(AppNavigator,{navigation:(0,_reactNavigation.addNavigationHelpers)({dispatch:_navigationStore2.default.dispatch,state:_navigationStore2.default.state}),__source:{fileName:_jsxFileName,lineNumber:190}}));
188191

189192
}}]);return App;}(_react2.default.Component),_class2.propTypes={navigator:_react2.default.PropTypes.func},_temp2))||_class;
190193

@@ -269,7 +272,7 @@ res[key]=screen;
269272
props.init=true;
270273
if(!_navigationStore2.default[key]){
271274
_navigationStore2.default[key]=new Function('actions','props','type','return function '+
272-
key+'(params){ actions[type](\''+key+'\', props, params)}')(_navigationStore2.default,_extends({},commonProps,props),type);
275+
key+'(params){ actions.execute(type, \''+key+'\', props, params)}')(_navigationStore2.default,_extends({},commonProps,props),type);
273276
}
274277

275278
if((onEnter||on)&&!_navigationStore2.default[key+_Util.OnEnter]){
@@ -309,7 +312,7 @@ _navigationStore2.default.router=AppNavigator.router;
309312
_navigationStore2.default.reducer=createReducer&&createReducer(props);
310313
RightNavBarButton=wrapBy(_NavBar.RightButton);
311314
LeftNavBarButton=wrapBy(_NavBar.LeftButton);
312-
return _react2.default.createElement(App,{navigator:AppNavigator,__source:{fileName:_jsxFileName,lineNumber:312}});
315+
return _react2.default.createElement(App,{navigator:AppNavigator,__source:{fileName:_jsxFileName,lineNumber:315}});
313316
};
314317
Router.propTypes={
315318
createReducer:_propTypes2.default.func,

dist/navigationStore.js

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,19 @@
1-
Object.defineProperty(exports,"__esModule",{value:true});exports.supportedActions=exports.ActionMap=undefined;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _ActionMap,_supportedActions,_desc,_value,_class,_descriptor,_descriptor2,_descriptor3,_descriptor4;var _mobx=require('mobx');
1+
Object.defineProperty(exports,"__esModule",{value:true});exports.supportedActions=exports.actionMap=undefined;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _actionMap,_supportedActions,_desc,_value,_class,_descriptor,_descriptor2,_descriptor3,_descriptor4;var _mobx=require('mobx');
22
var _reactNavigation=require('react-navigation');
33
var _ActionConst=require('./ActionConst');var ActionConst=_interopRequireWildcard(_ActionConst);
44
var _Util=require('./Util');function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _initDefineProp(target,property,descriptor,context){if(!descriptor)return;Object.defineProperty(target,property,{enumerable:descriptor.enumerable,configurable:descriptor.configurable,writable:descriptor.writable,value:descriptor.initializer?descriptor.initializer.call(context):void 0});}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _applyDecoratedDescriptor(target,property,decorators,descriptor,context){var desc={};Object['ke'+'ys'](descriptor).forEach(function(key){desc[key]=descriptor[key];});desc.enumerable=!!desc.enumerable;desc.configurable=!!desc.configurable;if('value'in desc||desc.initializer){desc.writable=true;}desc=decorators.slice().reverse().reduce(function(desc,decorator){return decorator(target,property,desc)||desc;},desc);if(context&&desc.initializer!==void 0){desc.value=desc.initializer?desc.initializer.call(context):void 0;desc.initializer=undefined;}if(desc.initializer===void 0){Object['define'+'Property'](target,property,desc);desc=null;}return desc;}function _initializerWarningHelper(descriptor,context){throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}
55

6-
var ActionMap=exports.ActionMap=(_ActionMap={
7-
jump:ActionConst.JUMP,
8-
push:ActionConst.PUSH,
9-
replace:ActionConst.REPLACE,
10-
back:ActionConst.BACK,
11-
BackAction:ActionConst.BACK_ACTION,
12-
popAndReplace:ActionConst.POP_AND_REPLACE,
13-
popTo:ActionConst.POP_TO,
14-
refresh:ActionConst.REFRESH,
15-
reset:ActionConst.RESET,
16-
focus:ActionConst.FOCUS,
17-
pushOrPop:ActionConst.PUSH_OR_POP,
18-
androidBack:ActionConst.ANDROID_BACK},_defineProperty(_ActionMap,
19-
ActionConst.JUMP,ActionConst.JUMP),_defineProperty(_ActionMap,
20-
ActionConst.PUSH,ActionConst.PUSH),_defineProperty(_ActionMap,
21-
ActionConst.REPLACE,ActionConst.REPLACE),_defineProperty(_ActionMap,
22-
ActionConst.BACK,ActionConst.BACK),_defineProperty(_ActionMap,
23-
ActionConst.BACK_ACTION,ActionConst.BACK_ACTION),_defineProperty(_ActionMap,
24-
ActionConst.POP_AND_REPLACE,ActionConst.POP_AND_REPLACE),_defineProperty(_ActionMap,
25-
ActionConst.POP_TO,ActionConst.POP_TO),_defineProperty(_ActionMap,
26-
ActionConst.REFRESH,ActionConst.REFRESH),_defineProperty(_ActionMap,
27-
ActionConst.RESET,ActionConst.RESET),_defineProperty(_ActionMap,
28-
ActionConst.FOCUS,ActionConst.FOCUS),_defineProperty(_ActionMap,
29-
ActionConst.PUSH_OR_POP,ActionConst.PUSH_OR_POP),_defineProperty(_ActionMap,
30-
ActionConst.ANDROID_BACK,ActionConst.ANDROID_BACK),_ActionMap);
6+
var actionMap=exports.actionMap=(_actionMap={},_defineProperty(_actionMap,
7+
ActionConst.JUMP,'jump'),_defineProperty(_actionMap,
8+
ActionConst.PUSH,'push'),_defineProperty(_actionMap,
9+
ActionConst.REPLACE,'replace'),_defineProperty(_actionMap,
10+
ActionConst.BACK,'pop'),_defineProperty(_actionMap,
11+
ActionConst.BACK_ACTION,'pop'),_defineProperty(_actionMap,
12+
ActionConst.POP_AND_REPLACE,'pop'),_defineProperty(_actionMap,
13+
ActionConst.POP_TO,'popTo'),_defineProperty(_actionMap,
14+
ActionConst.REFRESH,'refresh'),_defineProperty(_actionMap,
15+
ActionConst.RESET,'replace'),_defineProperty(_actionMap,
16+
ActionConst.PUSH_OR_POP,'push'),_actionMap);
3117

3218

3319
var supportedActions=exports.supportedActions=(_supportedActions={},_defineProperty(_supportedActions,
@@ -152,7 +138,12 @@ _this.setState(_this.nextState(_this.state,cmd),type,params);
152138

153139

154140

155-
run=function(){for(var _len=arguments.length,params=Array(_len>3?_len-3:0),_key=3;_key<_len;_key++){params[_key-3]=arguments[_key];}var type=arguments.length>0&&arguments[0]!==undefined?arguments[0]:ActionConst.PUSH;var routeName=arguments[1];var actions=arguments[2];
141+
execute=function(actionType,routeName){for(var _len=arguments.length,params=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){params[_key-2]=arguments[_key];}
142+
var type=actionMap[actionType]||actionType;
143+
_this[type].apply(_this,[routeName].concat(params));
144+
};this.
145+
146+
run=function(){for(var _len2=arguments.length,params=Array(_len2>3?_len2-3:0),_key2=3;_key2<_len2;_key2++){params[_key2-3]=arguments[_key2];}var type=arguments.length>0&&arguments[0]!==undefined?arguments[0]:ActionConst.PUSH;var routeName=arguments[1];var actions=arguments[2];
156147
var res={};
157148
for(var _iterator=params,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[typeof Symbol==='function'?typeof Symbol==='function'?Symbol.iterator:'@@iterator':'@@iterator']();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++];}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value;}var param=_ref;
158149
if(param){
@@ -182,11 +173,11 @@ _this.setState(newState);
182173
}
183174
};this.
184175

185-
push=function(routeName){for(var _len2=arguments.length,params=Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){params[_key2-1]=arguments[_key2];}
176+
push=function(routeName){for(var _len3=arguments.length,params=Array(_len3>1?_len3-1:0),_key3=1;_key3<_len3;_key3++){params[_key3-1]=arguments[_key3];}
186177
_this.run.apply(_this,[ActionConst.PUSH,routeName,null].concat(params));
187178
};this.
188179

189-
jump=function(routeName){for(var _len3=arguments.length,params=Array(_len3>1?_len3-1:0),_key3=1;_key3<_len3;_key3++){params[_key3-1]=arguments[_key3];}
180+
jump=function(routeName){for(var _len4=arguments.length,params=Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){params[_key4-1]=arguments[_key4];}
190181
_this.run.apply(_this,[ActionConst.JUMP,routeName,null].concat(params));
191182
};this.
192183

@@ -218,15 +209,15 @@ pop=function(){
218209
_this.dispatch(_reactNavigation.NavigationActions.back());
219210
};this.
220211

221-
reset=function(routeName){for(var _len4=arguments.length,params=Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){params[_key4-1]=arguments[_key4];}
212+
reset=function(routeName){for(var _len5=arguments.length,params=Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++){params[_key5-1]=arguments[_key5];}
222213
_this.replace.apply(_this,[routeName].concat(params));
223214
};this.
224215

225-
popTo=function(routeName){for(var _len5=arguments.length,params=Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++){params[_key5-1]=arguments[_key5];}
216+
popTo=function(routeName){for(var _len6=arguments.length,params=Array(_len6>1?_len6-1:0),_key6=1;_key6<_len6;_key6++){params[_key6-1]=arguments[_key6];}
226217
_this.run.apply(_this,[ActionConst.POP_TO,routeName].concat(params));
227218
};this.
228219

229-
replace=function(routeName){for(var _len6=arguments.length,params=Array(_len6>1?_len6-1:0),_key6=1;_key6<_len6;_key6++){params[_key6-1]=arguments[_key6];}
220+
replace=function(routeName){for(var _len7=arguments.length,params=Array(_len7>1?_len7-1:0),_key7=1;_key7<_len7;_key7++){params[_key7-1]=arguments[_key7];}
230221
var res={};
231222
for(var _iterator2=params,_isArray2=Array.isArray(_iterator2),_i2=0,_iterator2=_isArray2?_iterator2:_iterator2[typeof Symbol==='function'?typeof Symbol==='function'?Symbol.iterator:'@@iterator':'@@iterator']();;){var _ref2;if(_isArray2){if(_i2>=_iterator2.length)break;_ref2=_iterator2[_i2++];}else{_i2=_iterator2.next();if(_i2.done)break;_ref2=_i2.value;}var param=_ref2;
232223
if(param){

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.11",
3+
"version": "4.0.0-beta.12",
44
"description": "React Native Router using Flux architecture",
55
"repository": {
66
"type": "git",

src/Router.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ let RightNavBarButton;
1313
let LeftNavBarButton;
1414
const reservedKeys = [
1515
'children',
16+
'execute',
17+
'popTo',
1618
'navigate',
19+
'replace',
1720
'currentState',
1821
'refresh',
1922
'dispatch',
@@ -269,7 +272,7 @@ function processScene(scene: Scene, inheritProps = {}, clones = [], wrapBy) {
269272
props.init = true;
270273
if (!navigationStore[key]) {
271274
navigationStore[key] = new Function('actions', 'props', 'type', // eslint-disable-line no-new-func
272-
`return function ${key}(params){ actions[type]('${key}', props, params)}`)(navigationStore, { ...commonProps, ...props }, type);
275+
`return function ${key}(params){ actions.execute(type, '${key}', props, params)}`)(navigationStore, { ...commonProps, ...props }, type);
273276
}
274277

275278
if ((onEnter || on) && !navigationStore[key + OnEnter]) {

src/navigationStore.js

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,17 @@ import { NavigationActions } from 'react-navigation';
33
import * as ActionConst from './ActionConst';
44
import { OnEnter, OnExit } from './Util';
55

6-
export const ActionMap = {
7-
jump: ActionConst.JUMP,
8-
push: ActionConst.PUSH,
9-
replace: ActionConst.REPLACE,
10-
back: ActionConst.BACK,
11-
BackAction: ActionConst.BACK_ACTION,
12-
popAndReplace: ActionConst.POP_AND_REPLACE,
13-
popTo: ActionConst.POP_TO,
14-
refresh: ActionConst.REFRESH,
15-
reset: ActionConst.RESET,
16-
focus: ActionConst.FOCUS,
17-
pushOrPop: ActionConst.PUSH_OR_POP,
18-
androidBack: ActionConst.ANDROID_BACK,
19-
[ActionConst.JUMP]: ActionConst.JUMP,
20-
[ActionConst.PUSH]: ActionConst.PUSH,
21-
[ActionConst.REPLACE]: ActionConst.REPLACE,
22-
[ActionConst.BACK]: ActionConst.BACK,
23-
[ActionConst.BACK_ACTION]: ActionConst.BACK_ACTION,
24-
[ActionConst.POP_AND_REPLACE]: ActionConst.POP_AND_REPLACE,
25-
[ActionConst.POP_TO]: ActionConst.POP_TO,
26-
[ActionConst.REFRESH]: ActionConst.REFRESH,
27-
[ActionConst.RESET]: ActionConst.RESET,
28-
[ActionConst.FOCUS]: ActionConst.FOCUS,
29-
[ActionConst.PUSH_OR_POP]: ActionConst.PUSH_OR_POP,
30-
[ActionConst.ANDROID_BACK]: ActionConst.ANDROID_BACK,
6+
export const actionMap = {
7+
[ActionConst.JUMP]: 'jump',
8+
[ActionConst.PUSH]: 'push',
9+
[ActionConst.REPLACE]: 'replace',
10+
[ActionConst.BACK]: 'pop',
11+
[ActionConst.BACK_ACTION]: 'pop',
12+
[ActionConst.POP_AND_REPLACE]: 'pop',
13+
[ActionConst.POP_TO]: 'popTo',
14+
[ActionConst.REFRESH]: 'refresh',
15+
[ActionConst.RESET]: 'replace',
16+
[ActionConst.PUSH_OR_POP]: 'push',
3117
};
3218

3319
export const supportedActions = {
@@ -152,6 +138,11 @@ class NavigationStore {
152138
}
153139
};
154140

141+
execute = (actionType, routeName, ...params) => {
142+
const type = actionMap[actionType] || actionType;
143+
this[type](routeName, ...params);
144+
}
145+
155146
run = (type = ActionConst.PUSH, routeName, actions, ...params) => {
156147
let res = {};
157148
for (const param of params) {
@@ -188,7 +179,7 @@ class NavigationStore {
188179

189180
jump = (routeName, ...params) => {
190181
this.run(ActionConst.JUMP, routeName, null, ...params);
191-
}
182+
};
192183

193184
drawerOpen = () => {
194185
this.dispatch(NavigationActions.navigate({ routeName: 'DrawerOpen' }));

0 commit comments

Comments
 (0)