Installment.js 5.9 KB
'use strict';

import React from 'react';
import ReactNative, {
	AppRegistry,
	Platform,
	StyleSheet,
	Dimensions,
	TouchableOpacity,
} from 'react-native';
import {
	Provider,
	connect
} from 'react-redux';
import createReactClass from 'create-react-class';
import configureStore from './store/configureStore';
import {Record, List, Map} from 'immutable';

import appInitialState from './reducers/app/appInitialState';
import installmentInitialState from './reducers/installment/installmentInitialState';
import newRegisterInitialState from './reducers/newRegister/newRegisterInitialState';
import repayListInitialState from './reducers/repayList/repayListInitialState';
import repayDetailInitialState from './reducers/repayDetail/repayDetailInitialState';
import cardAddInitialState from './reducers/bankCardAdd/cardAddInitialState';
import cardListInitialState from './reducers/bankCardList/cardListInitialState';
import cardDetailInitialState from './reducers/bankCardDetail/cardDetailInitialState';
import orderListInitialState from './reducers/orderList/orderListInitialState';
import orderDetailInitialState from './reducers/orderDetail/orderDetailInitialState';

import InstallmentContainer from './containers/InstallmentContainer';
import OpenContainer from './containers/OpenContainer';
import InstallmentStatusContainer from './containers/InstallmentStatusContainer';
import RepayListContainer from './containers/RepayListContainer';
import RepayDetailContainer from './containers/RepayDetailContainer';
import RepayRecordListContainer from './containers/RepayRecordListContainer';
import InstallmentAccountContainer from './containers/InstallmentAccountContainer';
import InstallmentMyCardContainer from './containers/InstallmentMyCardContainer';
import InstallmentMyCardDetailContainer from './containers/InstallmentMyCardDetailContainer';
import InstallmentMyCardAddContainer from './containers/InstallmentMyCardAddContainer';
import InstallmentMyOrderContainer from './containers/InstallmentMyOrderContainer';
import InstallmentMyOrderDetailContainer from './containers/InstallmentMyOrderDetailContainer';

import {
	setPlatform,
	setHost,
	setServiceHost,
	setChannel,
} from './reducers/app/appActions';

import {
	setInstallmentStausPageParams,
} from './reducers/installment/installmentActions';

import {
	setQueryDays,
} from './reducers/repayList/repayListActions';

import {
	setRepayOrderNo,
} from './reducers/repayDetail/repayDetailActions';

import {
    setCardIdNo,
} from './reducers/bankCardDetail/cardDetailActions';

import {
    setOrderCode,
} from './reducers/orderDetail/orderDetailActions';

function getInitialState() {
	const _initState = {
		app: (new appInitialState()),
    	installment: (new installmentInitialState()),
		newRegister: (new newRegisterInitialState()),
		repayList: (new repayListInitialState()),
		repayDetail: (new repayDetailInitialState()),
		myCardAdd: (new cardAddInitialState()),
		myCardList: (new cardListInitialState()),
		myCardDetail: (new cardDetailInitialState()),
		myOrderList: (new orderListInitialState()),
		myOrderDetail: (new orderDetailInitialState()),
	};
	return _initState;
}


export default function native(platform) {

	let YH_Installment = createReactClass({
		render() {
			let type = this.props.type;
		  	const store = configureStore(getInitialState());
			store.dispatch(setPlatform(platform));
			store.dispatch(setHost(this.props.host));
			store.dispatch(setServiceHost(this.props.serviceHost));
			let channel = this.props.channel;
			channel && store.dispatch(setChannel(channel));
			if (type == 'installmentHome') {
				return (
					<Provider store={store}>
						<InstallmentContainer />
					</Provider>
				);
			} else if (type == 'openInstall') {
				return (
					<Provider store={store}>
						<OpenContainer />
					</Provider>
				);
			} else if (type == 'installStatus') {
				let status = this.props.status;
				let failReason = this.props.failReason;
				let uid = this.props.uid;
				store.dispatch(setInstallmentStausPageParams(status,failReason,uid));
				return (
					<Provider store={store}>
						<InstallmentStatusContainer />
					</Provider>
				)
			} else if (type == 'repayList') {
				let days = this.props.days;
				if (days && days !== '') {
					store.dispatch(setQueryDays(days));
				}
				return (
					<Provider store={store}>
						<RepayListContainer />
					</Provider>
				);
			} else if (type == 'repayDetail') {
				let repayOrderNo = this.props.repayOrderNo;
				if (repayOrderNo && repayOrderNo !== '') {
					store.dispatch(setRepayOrderNo(repayOrderNo));
				}
				return (
					<Provider store={store}>
						<RepayDetailContainer />
					</Provider>
				);
			} else if (type == 'repayRecordList') {
				return (
					<Provider store={store}>
						<RepayRecordListContainer />
					</Provider>
				)
			} else if (type == 'installAccount') {
				return (
					<Provider store={store}>
						<InstallmentAccountContainer />
					</Provider>
				)
			} else if (type == 'installMyCard') {
				return (
					<Provider store={store}>
						<InstallmentMyCardContainer />
					</Provider>
				)
			} else if (type == 'installMyCardDetail') {
				let cardIdNo = this.props.cardIdNo;
				store.dispatch(setCardIdNo(cardIdNo));
				return (
					<Provider store={store}>
						<InstallmentMyCardDetailContainer />
					</Provider>
				)
			} else if (type == 'installMyCardAdd') {
				return (
					<Provider store={store}>
						<InstallmentMyCardAddContainer />
					</Provider>
				)
			} else if (type == 'installMyOrder') {
				return (
					<Provider store={store}>
						<InstallmentMyOrderContainer />
					</Provider>
				)
			} else if (type == 'installMyOrderDetail') {
				let orderCode = this.props.orderCode;
				store.dispatch(setOrderCode(orderCode));
				return (
					<Provider store={store}>
						<InstallmentMyOrderDetailContainer />
					</Provider>
				)
			}
		}
	});

	AppRegistry.registerComponent('YH_Installment', () => YH_Installment);
}

let styles = StyleSheet.create({

});