InstallmentMyOrderDetailContainer.js 5.09 KB
'use strict'

import React, {Component} from 'react';
import {
    StyleSheet,
    Dimensions,
    Platform,
    View,
    NativeModules,
    InteractionManager,
    NativeAppEventEmitter,
    DeviceEventEmitter,
    Text,
    ListView,
    TouchableOpacity,
} from 'react-native'

import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {Map} from 'immutable';
import * as orderDetailActions from '../reducers/orderDetail/orderDetailActions';
import ServerError from '../components/installment/ServerError';
import MyOrderDetail from '../components/order/MyOrderDetail';


const actions = [
    orderDetailActions,
];
function mapStateToProps(state) {
    return {
        ...state
    };
}
function mapDispatchToProps(dispatch) {

    const creators = Map()
        .merge(...actions)
        .filter(value => typeof value === 'function')
        .toObject();

    return {
        actions: bindActionCreators(creators, dispatch),
        dispatch
    };
}
class InstallmentMyOrderDetailContainer extends Component {

    constructor(props) {
        super(props);
        this._reloadPage = this._reloadPage.bind(this);
        this._onPressCheckboxCell = this._onPressCheckboxCell.bind(this);
        this._onPressCheckboxAll = this._onPressCheckboxAll.bind(this);
        this._onPressPayNow = this._onPressPayNow.bind(this);
        this._closeBankSafePay = this._closeBankSafePay.bind(this);
        this._bankSafePayNow = this._bankSafePayNow.bind(this);
        this._onPressChangeBankCard = this._onPressChangeBankCard.bind(this);
        this._onCancelChangeBankCard = this._onCancelChangeBankCard.bind(this);
        this._onConfirmChangeBankCard = this._onConfirmChangeBankCard.bind(this);
        this._addNewBankCard = this._addNewBankCard.bind(this);
        this._cancelPayInConfirm = this._cancelPayInConfirm.bind(this);
        this._reSendConfirmPaySnsCode = this._reSendConfirmPaySnsCode.bind(this);
        this._confirmPayAction = this._confirmPayAction.bind(this);
        this._clearTipMessage = this._clearTipMessage.bind(this);

        this.subscription = DeviceEventEmitter.addListener(
            'BankCardChangeEvent',
            () => {
                this.props.actions.getBankCards && this.props.actions.getBankCards();
            }
        );
    }

    _reloadPage() {
        this.props.actions.getBankCards();
        this.props.actions.getOrderDetail();
    }

    _onPressCheckboxCell(cellInfo) {
        this.props.actions.onPressCheckboxCell(cellInfo);
    }

    _onPressCheckboxAll() {
        this.props.actions.onPressCheckboxAll();
    }

    _onPressPayNow() {
        this.props.actions.onPressPayNow();
    }

    _closeBankSafePay() {
        this.props.actions.setBankSafePayViewStatus(false);
    }

    _bankSafePayNow() {
        this.props.actions.bankSafePayNow();
    }

    _onPressChangeBankCard(){
        this.props.actions.setChangeBankCardViewStatus(true);
    }

    _onCancelChangeBankCard(){
        this.props.actions.setChangeBankCardViewStatus(false);
    }

    _onConfirmChangeBankCard(cardInfo){
        this.props.actions.confirmChangeBankCard(cardInfo);
    }

    _addNewBankCard(){
        this.props.actions.goAddNewBankCard();
    }

    _cancelPayInConfirm() {
        this.props.actions.setShowConfirmPayViewStatus(false);
    }

    _reSendConfirmPaySnsCode() {
        this.props.actions.reSendConfirmPaySnsCode();
    }

    _confirmPayAction(snsCode) {
        this.props.actions.confirmPayAction(snsCode);
    }

    _clearTipMessage() {
        this.props.actions.setTipMessage('');
    }


    componentDidMount() {
        this.props.actions.getBankCards();
        this.props.actions.getOrderDetail();
    }

    componentWillUnmount(){
        this.subscription && this.subscription.remove();
    }

    render() {

        let {error} = this.props.myOrderDetail;
        if (error) {
            return (
                <ServerError
                    reloadPage={this._reloadPage}
                />
            );
        }

        return (
            <MyOrderDetail
                style={styles.container}
                myOrderDetail={this.props.myOrderDetail}
                onPressCheckboxCell={this._onPressCheckboxCell}
                onPressCheckboxAll={this._onPressCheckboxAll}
                onPressPayNow={this._onPressPayNow}
                closeBankSafePay={this._closeBankSafePay}
                bankSafePayNow={this._bankSafePayNow}
                cancelPayInConfirm={this._cancelPayInConfirm}
                reSendConfirmPaySnsCode={this._reSendConfirmPaySnsCode}
                confirmPayAction={this._confirmPayAction}
                clearTipMessage={this._clearTipMessage}
                onPressChangeBankCard={this._onPressChangeBankCard}
                onCancelChangeBankCard={this._onCancelChangeBankCard}
                onConfirmChangeBankCard={this._onConfirmChangeBankCard}
                addNewBankCard={this._addNewBankCard}
            />
        );
    }
}
let styles = StyleSheet.create({
    container: {
        flex: 1,
    },


});

export default connect(mapStateToProps, mapDispatchToProps)(InstallmentMyOrderDetailContainer);