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

import {getHeaderHeight, getHeaderPadding, getFooterBottom, xnToast} 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 Forum from "./pages/root/Forum";
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';
import VolunteerService from './pages/homeClick/volunteerService';
import VolunteerServiceDetail from './pages/homeClick/volunteerServiceDetail';
import IOSScan from './pages/component/iosScan';
import TwoLevelScreen from './pages/component/twoLevelScreen';
import ChooseActivityAttribute from './pages/personCenter/chooseActivityAttribute';
import chooseVolunteerActivity from './pages/personCenter/chooseVolunteerActivity';
import errorPost from './pages/component/errorPost'
import myMessageDetail from './pages/personCenter/myMessageDetail'

import PointsMall from './pages/integralMall/pages/tabs/PointsMall';
import Integral from './pages/integralMall/pages/tabs/Integral';
import ExchangeRecord from './pages/integralMall/pages/tabs/ExchangeRecord';
import {_settingNonPassport} from "./pages/integralMall/utils/AppService";
import getConfig from "./config";
import * as xnRpc from "./service/rpc";
import {mallRpc} from "./pages/integralMall/utils/rpc";
import xnService from "./service/AppService";
import forumRpc from "../forum/service/rpc";

/***社区开始**/
import Forwarding from "../forum/pages/home/Forwarding";
import ChooseSection from "../forum/pages/createArticles/chooseSection";
import PublishArticles from "../forum/pages/createArticles/publishArticles";
import HomeListDetail from "../forum/pages/detail/HomeListDetail";
import OriginHomeListDetail from "../forum/pages/detail/OriginHomeListDetail";
import AtPerson from "../forum/pages/component/atPerson";
import Question from "../forum/pages/questions/Question.js";
import QuestionList from "../forum/pages/questions/QuestionList.js";
import QuestionAnswer from "../forum/pages/questions/QuestionAnswer";
import QuestionInvite from "../forum/pages/questions/QuestionInvite";
import TopicBoard from "../forum/pages/topic/TopicBoard";
import SearchResults from "../forum/pages/Search/SearchResults";
import AtlasDetails from "../forum/pages/atlas/AtlasDetails";
import atlasAdController from "../forum/pages/atlas/atlasAdController";
import AtlasComment from "../forum/pages/atlas/AtlasComment";
import CommunitySearch from "../forum/pages/Search/CommunitySearch";
import InReview from "../forum/pages/RelatedBusinesses/InReview";
import ApplyResult from "../forum/pages/RelatedBusinesses/ApplyResult";
import ConcernSearch from "../forum/pages/concern/ConcernSearch";
import EditProfile from "../forum/pages/EditProfile/EditProfile";
import RelateMerchants from "../forum/pages/RelatedBusinesses/RelateMerchants";
import HistoryHome from "../forum/pages/mine/history/HistoryHome";
import ChooseTopic from '../forum/pages/component/chooseTopic';
import QuestionAnswerDetail from '../forum/pages/questions/QuestionAnswerDetail';
import CommentReply from '../forum/pages/detail/CommentReply';
import CommentPrise from '../forum/pages/detail/CommentRrise';
import MineForum from '../forum/pages/mine/Mine';
import MyPage from '../forum/pages/mine/mypage/MyPage';
import Collection from '../forum/pages/mine/collection/Collection';
import Attention from '../forum/pages/mine/attention/Attention';
import PersonalAttention from '../forum/pages/mine/attention/PersonalAttention';
import UploadVideoFirstStep from '../forum/pages/uploadVideo/firstStep';
import UploadVideoSecondStep from '../forum/pages/uploadVideo/secondStep';
import UploadVideoThirdStep from '../forum/pages/uploadVideo/thirdStep';
import PersonalHomePage from '../forum/pages/mine/PersonalHomePage';
import VideoDetail from '../forum/pages/video/videoDetail';
import TransferVideoDetail from '../forum/pages/video/transferVideoDetail';
import DetailImageBrowser from '../forum/pages/component/DetailImageBrowser';
import ClassGrade from "../forum/pages/course/ClassGrade";
import Exercises from "../forum/pages/course/Exercises";
import ResultModal from "../forum/pages/course/ResultModal";
import PayResult from "../forum/pages/course/PayResult";
import FangSearch from "../forum/pages/Search/FangSearch";
import WebController from "../forum/pages/WebController";
import forumService from "../forum/service/AppService";
/***社区结束****/

const line = 1 / PixelRatio.get();
const nativeBridge = NativeModules.BlueToolManage;
const NativeModule = new NativeEventEmitter(nativeBridge);
export let systemSite = null
export let tenant = null
export let ip = null

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

}, {
    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 Tab = TabNavigator({
    PointsMall: {screen: PointsMall},
    Integral: {screen: Integral},
    ExchangeRecord: {screen: ExchangeRecord},

}, {
    tabBarComponent: TabBarBottom,
    tabBarOptions: {
        activeTintColor: "#e8281d",
        inactiveTintColor: "#858585",
        tabStyle: {
            paddingBottom: 3,
        },
        labelStyle: {
            fontSize: 11,
        },
        style: {borderTopWidth: line, borderTopColor: "#dddddd"},
    },

    tabBarPosition: 'bottom',
    cardStyle: {
        backgroundColor: 'white',
        shadowOpacity: 0,
    },
    lazy: true,
    animationEnabled: false,
    swipeEnabled: false,
});

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},
        VolunteerService:{screen:VolunteerService},
        VolunteerServiceDetail:{screen:VolunteerServiceDetail},
        IOSScan:{screen:IOSScan},
        TwoLevelScreen:{screen:TwoLevelScreen},
        ChooseActivityAttribute:{screen:ChooseActivityAttribute},
        chooseVolunteerActivity:{screen:chooseVolunteerActivity},
        Tab: {screen: Tab},
        ErrorPost:{screen:errorPost},
        myMessageDetail:{screen:myMessageDetail},
        /****社区相关页面开始*****/
        ChooseSection: { screen: ChooseSection },
        PublishArticles: { screen: PublishArticles },
        Forwarding: { screen: Forwarding },
        HomeListDetail: { screen: HomeListDetail },
        AtPerson: { screen: AtPerson },
        QuestionAnswer: { screen: QuestionAnswer },
        QuestionInvite: { screen: QuestionInvite },
        ChooseTopic: { screen: ChooseTopic },
        // 问答版块

        TopicBoard: { screen: TopicBoard },
        ConcernSearch: { screen: ConcernSearch },
        HistoryHome: { screen: HistoryHome },
        QuestionAnswerDetail: { screen: QuestionAnswerDetail },
        AtlasDetails: { screen: AtlasDetails},
        atlasAdController:{screen:atlasAdController},
        AtlasComment: {screen: AtlasComment},
        CommunitySearch: {screen: CommunitySearch},
        CommentReply:{screen:CommentReply},
        Question: { screen: Question },
        QuestionList: { screen: QuestionList },
        // 我的
        MineForum: {screen: MineForum},
        MyPage: {screen: MyPage},
        EditProfile: {screen: EditProfile},
        RelateMerchants: {screen: RelateMerchants},
        InReview:{screen: InReview},
        ApplyResult:{screen: ApplyResult},
        //个人首页
        PersonalHomePage:{screen: PersonalHomePage},
        PersonalAttention:{screen: PersonalAttention},
        // 收藏
        Collection: {screen: Collection},
        Attention: {screen: Attention},
        CommentPrise :{screen : CommentPrise},
        UploadVideoFirstStep: { screen: UploadVideoFirstStep },
        UploadVideoSecondStep: { screen: UploadVideoSecondStep },
        UploadVideoThirdStep: { screen: UploadVideoThirdStep },
        VideoDetail: { screen: VideoDetail },
        TransferVideoDetail: { screen: TransferVideoDetail },
        SearchResults :{screen: SearchResults},
        DetailImageBrowser:{screen:DetailImageBrowser},
        OriginHomeListDetail:{screen:OriginHomeListDetail},
        //课程
        ClassGrade:{screen:ClassGrade},
        Exercises:{screen:Exercises},
        ResultModal:{screen:ResultModal},
        PayResult:{screen:PayResult},
        FangSearch:{screen:FangSearch},
        //网页展示
        WebController:{screen:WebController}
        /****社区相关页面结束*****/
    },
    {
        navigationOptions:{
            headerStyle:{
                paddingTop:getHeaderPadding(),
                height:getHeaderHeight(),
                backgroundColor:'#fff',
                elevation:0,
                borderBottomWidth:0
            },
            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.deviceParams = {};
        global.forumId = '983640534910636033';
        global.safeEscortHasClick = false;
    };

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

        global.config= await getConfig();
        xnRpc.init(global.config);
        // todo 初始化社区相关,先写死
        forumRpc.init(global.config);
        global.tenantId = global.config.tenantId;

        global.homeColor = "#39f";

    };

    async componentDidMount() {
        try {
            // const data = await fetch("http://pv.sohu.com/cityjson?ie=utf-8");
            // const data1 = await data.text();
            // eval(data1);
            // ip = returnCitySN.cip;settingNonPassport
            // const result = xnService.settingNonPassport({systemType: "POINT", deviceType: "MOBILE"});
            let config= await getConfig();
            mallRpc.init(config);
            const result = await _settingNonPassport({systemType: "POINT", deviceType: "MOBILE"});
            console.log(result, ip, '--------------------');
            systemSite = result.systemSite;
            tenant = result.tenant;
        } catch (e) {
            console.log(e);
        }

        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(),
    }
});