app.js 5.81 KB
/**
 * Created by DEV005 on 2017/8/23.
 */
import React, { Component } from 'react';
import {
    StyleSheet,
    View,
    Text,
    NetInfo,
    NativeModules,
    BackHandler,
    InteractionManager
} from 'react-native';
import {Navigator} from 'xn-react-native-general-head';
import {xnToast} from "./utils/utils";
import AppService from "./service/AppService";
import Home from './pages/home';
import AddPeople from './pages/add/addPeople';
import AddNotice from './pages/add/addNotice';
import AddEmployee from './pages/public/addEmployee';
import MyPublish from './pages/mypublish/myPublish';
import Notifications from './pages/detail/notification';
import NotificationDetail from './pages/detail/notificationDetail';
import AlertError from  './pages/detail/alertError'
import SearchPeople from './pages/public/searchPeople';

const NavigatorNav = Navigator (
    {
        Home:{screen :Home},
        AddNotice :{screen :AddNotice},
        addPeople:{screen :AddPeople},
        AddEmployee:{screen :AddEmployee},
        MyPublish:{screen :MyPublish},
        Notifications:{screen :Notifications},
        NotificationDetail:{screen :NotificationDetail},
        AlertError:{screen:AlertError},
        SearchPeople:{screen:SearchPeople}
    },
    {
        // defaultBack:'black',
        title:"通知" ,
        code:"noticeSys",//此项未设置头部按钮颜色,传入'black' 默认为 黑底白色图标传入其他值或者不传则为 白底黑色图标
        config:''
    }
);

//当前路由名称
mCurrentRouterName = "";
//返回键监听
// const defaultGetStateForAction = NavigatorNav.props.children[0].type.router.getStateForAction;
// NavigatorNav.props.children[0].type.router.getStateForAction = (action,state) => {
//
//     if (state && state.routes){
//         let childRouters = state.routes;
//         if (childRouters && childRouters.length > 0) {
//             let curRouterName = childRouters[state.index].routeName;
//             this.mCurrentRouterName = curRouterName;
//         }
//     }
//     return defaultGetStateForAction(action,state);
// };

/*const defaultGetStateForAction = NavigatorNav.router.getStateForAction;
NavigatorNav.router.getStateForAction = (action,state) => {

    if (state && state.routes){
        let childRouters = state.routes;
        if (childRouters && childRouters.length > 0) {
            let curRouterName = childRouters[state.index].routeName;
            this.mCurrentRouterName = curRouterName;
        }
    }



    return defaultGetStateForAction(action,state);
};*/
const defaultGetStateForAction = NavigatorNav.props.children[0].type.router.getStateForAction;
NavigatorNav.props.children[0].type.router.getStateForAction = (action,state) => {

    if (state && state.routes){
        let childRouters = state.routes;
        if (childRouters && childRouters.length > 0) {
            let curRouterName = childRouters[state.index].routeName;
            this.mCurrentRouterName = curRouterName;
        }
    }
    return defaultGetStateForAction(action,state);
};


class App extends Component{
    constructor(props){
        super(props);
        this.state = {
            loading:true,
        };
        if(Object.getOwnPropertyNames(props).length > 0)
        {
            global.initParam = {};
            for(key in props)
            {
                global.initParam[key] = props[key];
            }
        }
    }

    componentWillMount(){
        let _this = this;
        NetInfo.addEventListener('change',function(isConnected){
            if(isConnected.toLocaleLowerCase() != 'none'){
                global.isConnected = true;
            }else{
                global.isConnected = false;
            }
        });
        /*执行人列表*/
        global.doEmployee = [];
        //通讯录搜索选择人员
        global.searchSelectedEmployee = [];
        //通讯录选取的人员列表
        global.selectedEmployee = [];

        NativeModules.security.getPassportId().then((result) => {
            AppService.getPassport({id:result}).then(data=>{
                if(data.message){
                    xnToast(data.message);
                    this.setState({
                        loading:false
                    });
                    return
                }
                if(data.errors == null || data.errors.length > 0){
                    xnToast(data.errors[0].message);
                    this.setState({
                        loading:false
                    });
                }else{
                    global.tenantId=data.passport.tenantId;
                    global.userId=data.passport.userId;
                    global.tenantName=data.passport.tenantName;
                    global.userName = data.passport.userName;
                    this.setState({
                        loading:false
                    });
                }
            });
            NativeModules.security.getTenantName().then((result)=>{
                global.tenantShortName=result;
            });
        }).catch((error) => {
            xnToast(error);
            this.setState({
                loading:false
            });
        });

        BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid);

    };
   //android物理返回键
    onBackAndroid = () => {
        if (mCurrentRouterName == "Home"){
            NativeModules.system.navTo("BACK");
            return true;
        }
        return false;
    };

    componentWillUnmount(){
        NetInfo.removeEventListener('change');
        BackHandler.removeEventListener('hardwareBackPress', this.onBackAndroid);

    }

    render() {
        return (
            <View style={styles.root}>
                {!this.state.loading && <View style={{flex:1}}>{NavigatorNav}</View>}
            </View>
        );
    }
}
const styles = StyleSheet.create({
    root:{
        flex:1
    }

});
export default App;