index.js 5.61 KB
/**
 * Created by Cassie on 208/03/21.
 */
import React, { Component } from 'react';
import {
    StyleSheet,
    View,
    NativeModules,
    AsyncStorage,
    Platform
} from 'react-native';
import {StackNavigator,TabNavigator,NavigationActions} from 'react-navigation';
import SplashScreen from "rn-splash-screen";
import { updateFocus, getCurrentRouteKey } from 'react-navigation-is-focused-hoc';

import {getHeaderHeight,getHeaderPadding,getFooterBottom} from "./utils/utils";
import SignIn from "./pages/login/signIn";
import Register from "./pages/login/register";
import ForgetPwd from "./pages/login/forgetPwd";
import SafeEscort from "./pages/root/safeEscort";
import EventReport from "./pages/root/eventReport";
import Home from  "./pages/root/home";
import Volunteer from "./pages/root/volunteer"
import Community from "./pages/root/community";
import PersonCenter from "./pages/personCenter/index";
import Info from "./pages/personCenter/Info";
import MyEvents from './pages/homeClick/myEvents';
import myMessage from './pages/personCenter/myMessage';
import ChangeUserInfo from './pages/personCenter/changeUserInfo';
import ChooseUserInfo from './pages/personCenter/chooseUserInfo';
import Detail from './pages/community/detail';
import IntegralShop from './pages/personCenter/integralShop';
import PlateList from './pages/community/plateList';
import PlateName from './pages/community/plateName';
import SubmitSuccess from './pages/community/submitSuccess';
import FloorDetail from './pages/community/floorDetail';
import Search from './pages/community/search';
import Post from './pages/community/post';
import aboutUs from './pages/personCenter/aboutUs';
import UserAgreement from './pages/login/userAgreement';
import MyContribution from './pages/personCenter/myContribution';
import PerfectInfo from './pages/personCenter/perfectInfo';

//tabbar
const First = TabNavigator({
    Home: { screen:Home},
    SafeEscort:{screen:SafeEscort},
    EventReport: { screen:EventReport},
    Community: { screen:Community},
    Volunteer: { screen:Volunteer},

}, {
    tabBarOptions: {
        activeTintColor: '#367bf0',
        activeBackgroundColor:'#ffffff',
        inactiveBackgroundColor:'#ffffff',
        inactiveTintColor: '#666',
        labelStyle:{
            fontSize:12,
            padding:0,
            margin:0,
        },
        style:{
            backgroundColor: '#fff',
        },
        showIcon: true,
        indicatorStyle: {
            height: 0
        },
    },
    tabBarPosition: 'bottom',
    swipeEnabled:false,
    animationEnabled:false,
    lazy:true,
});

const Navigator = StackNavigator(
    {
        SignIn:{screen:SignIn},
        Register:{screen:Register},
        ForgetPwd:{screen:ForgetPwd},
        UserAgreement:{screen:UserAgreement},
        Root:{screen:First},
        PersonCenter:{screen:PersonCenter},
        Info:{screen:Info},
        MyEvents:{screen:MyEvents},
        myMessage:{screen:myMessage},
        ChangeUserInfo:{screen:ChangeUserInfo},
        ChooseUserInfo:{screen:ChooseUserInfo},
        Detail:{screen:Detail},
        IntegralShop:{screen:IntegralShop},
        PlateList:{screen:PlateList},
        PlateName:{screen:PlateName},
        SubmitSuccess:{screen:SubmitSuccess},
        FloorDetail:{screen:FloorDetail},
        Search:{screen:Search},
        Post:{screen:Post},
        aboutUs:{screen:aboutUs},
        MyContribution:{screen:MyContribution},
        PerfectInfo:{screen:PerfectInfo},
    },
    {
        navigationOptions:{
            headerStyle:{
                paddingTop:getHeaderPadding(),
                height:getHeaderHeight(),
                backgroundColor:'#f8f8f8',
            },
            headerTitleStyle:{
                alignSelf:'center',
                alignItems:'center',
                justifyContent:'center',
                flexDirection:'column',
                color:'#000',
                fontSize:18,
                fontWeight:'bold',
            },
        }
    },
);

const defaultGetStateForAction = Navigator.router.getStateForAction;
Navigator.router.getStateForAction = (action,state) => {
    if(action.routeName && action.routeName == 'Root'){
        return defaultGetStateForAction(NavigationActions.reset({
            index: 0,
            actions: [
                NavigationActions.navigate({routeName: 'Root'})
            ]
        }))
    }else{
        return defaultGetStateForAction(action,state);
    }
};

export default class Index extends Component{
    constructor(props){
        super(props);
        this.state = {
            loading:true
        };
        global.forumId = '983640534910636033';
    };

    componentWillMount(){
        NativeModules.BlueToolManage.getCurrentStatus().then((data) => {
            if(data == '1'){
                this.getPhoneNumber();
            }else if(data == '0'){
                this.setState({
                    loading:false
                });
            }
        })
    };

    componentDidMount() {
        setTimeout(() => {
            SplashScreen.hide();
        }, 2000);
    }

    getPhoneNumber(){
        NativeModules.BlueToolManage.getPhoneNumber().then((number) => {
            global.phoneNumber = number;
            this.setState({
                loading:false
            });
        })
    }

    render(){
        return(
            <View style={styles.root}>
                {!this.state.loading && <Navigator onNavigationStateChange={(prevState, currentState) => {
                    updateFocus(currentState)
                }} />}
            </View>
        );
    }
}
const styles = StyleSheet.create({
    root:{
        flex:1,
        marginBottom:getFooterBottom(),
    }
});