index.js 6.32 KB
/**
 * Created by Cassie on 2018/03/06
 */
import React, { Component } from 'react';
import {
    StyleSheet,
    View,
    Text,
    NativeModules,
    NetInfo,
    Platform,
    ActivityIndicator,
    DeviceEventEmitter,
    AsyncStorage,
    BackHandler,
    Keyboard
} from 'react-native';
import {StackNavigator} from 'react-navigation';

import {zoomW,zoomH} from "./utils/getSize";
import {xnToast} from "./utils/utils";

import Home from './pages/home';
import MomentScreen from './pages/screens/MomentScreen';
import ImageShow from './pages/screens/ImageShowScreen';
import PublishMomentScreen from './pages/screens/PublishMomentScreen';
import CommonLoadingView from './pages/views/CommonLoadingView';
import CommonTitleBar from './pages/views/CommonTitleBar';
import EmojiView from './pages/views/EmojiView';
import ListItem from './pages/views/ListItem';
import ListItemDivider from './pages/views/ListItemDivider';
import LoadingView from './pages/views/LoadingView';

import MomentMenuView from './pages/views/MomentMenuView';
import MoreView from './pages/views/MoreView';
import PopupWindow from './pages/views/PopupWindow';
import ReplyPopWin from './pages/views/ReplyPopWin';
import SideBar from './pages/views/SideBar';
import ImgView from './pages/views/imgView';
import MomentCommentView from "./pages/views/MomentCommentView";
const Navigator = StackNavigator(
    {
        MomentScreen:{screen:MomentScreen},
        ImageShow:{screen:ImageShow},
        PublishMomentScreen:{screen:PublishMomentScreen},
        CommonTitleBar:{screen:CommonTitleBar},
        CommonLoadingView:{screen:CommonLoadingView},
        EmojiView:{screen:EmojiView},
        ListItem:{screen:ListItem},
        ListItemDivider:{screen:ListItemDivider},
        LoadingView:{screen:LoadingView},
        MomentMenuView:{screen:MomentMenuView},
        MoreView:{screen:MoreView},
        PopupWindow:{screen:PopupWindow},
        ReplyPopWin:{screen:ReplyPopWin},
        ImgView:{screen:ImgView},
        SideBar:{screen:SideBar},
        Home:{screen:Home},
        MomentCommentView:{screen:MomentCommentView}
    },
    {
        navigationOptions:({navigation}) => ({
            headerStyle:{
                elevation:0, // 去掉阴影
                backgroundColor:'#fff',
                borderBottomWidth:0,
                height:(48/zoomH)
            },
            headerTitleStyle:{
                alignSelf:'center',
                alignItems:'center',
                justifyContent:'center',
                flexDirection:'column',
                color:'#000',
                fontSize:18,
                fontWeight:'bold',
            }
        })
    },
);

class App extends Component{
    constructor(props){
        super(props);
        this.state = {
            loading:true
        };
    }
    componentWillMount(){
        this.setState({
            loading:false
        })
        //todo 网络先设置为true
        global.isConnected = true;
        let _this = this;
        NetInfo.addEventListener('change',function(isConnected){
            if(isConnected.toLocaleLowerCase() != 'none'){
                global.isConnected = true;
                /*global.tenantId = __IOS__ ?JSON.parse(global.initParam.passport).passport.tenantId:JSON.parse(global.initParam.passport).tenantId;
                global.userId = __IOS__ ?JSON.parse(global.initParam.passport).passport.userId:JSON.parse(global.initParam.passport).userId;
                AsyncStorage.getItem('draft', function (errs, result) {
                    if(!errs){
                        if(result){
                            let params = JSON.parse(result);
                            if(global.userId != params.userId){
                                AsyncStorage.clear(function(){
                                    _this.setState({
                                        loading:false
                                    });
                                })
                            }else{
                                _this.setState({
                                    loading:false
                                });
                            }
                        }else{
                            _this.setState({
                                loading:false
                            });
                        }
                    }
                });*/
            }else{
                _this.setState({
                    loading:false
                });
                global.isConnected = false;
                xnToast('暂无网络连接111,请稍后重试!')
            }
        });
        /*NativeModules.security.getIdentityId().then((result) => {
                AppService.getIdentity({id:result}).then(data=>{
                    if(data.message) {
                        xnToast(data.message);
                        return
                    }
                    if(data.errors.length > 0) {
                        xnToast(data.errors[0].message);
                    }else{
                        this.state.loading = false;
                        global.passportId = data.passport.id;
                        global.userId = data.passport.userId;
                        global.userName = data.passport.userName;
                    }
                });
            }
        ).catch((error) => {
            console.log(error)
        });
*/
    }
    render() {
        return (
            <View style={styles.root}>
                {!this.state.loading && <Navigator />}
                {this.state.loading && <View style={styles.loadingBg}>
                    <View style={styles.loadingBox}>
                        <ActivityIndicator size='large' color='#fff' />
                        <Text style={{fontSize:16,color:'#fff',marginTop:(6/zoomH)}}>加载中...</Text>
                    </View>
                </View>}
            </View>
        );
    }
}
const styles = StyleSheet.create({
    root:{
        flex:1
    },
    loadingBg:{
        position:'absolute',
        top:0,
        width:'100%',
        height:'100%',
        display:'flex',
        justifyContent:'center',
        alignItems:'center'
    },
    loadingBox:{
        width:(100/zoomW),
        height:(120/zoomH),
        backgroundColor:'rgba(0,0,0,.5)',
        borderRadius:8,
        display:'flex',
        alignItems:'center',
        justifyContent:'center'
    }
});

export default App;