InstallmentMyOrderContainer.js 2.54 KB
'use strict'

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

import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {Map} from 'immutable';
import * as orderListActions from '../reducers/orderList/orderListActions';
import ServerError from '../components/installment/ServerError';
import MyOrderList from '../components/order/MyOrderList';


const actions = [
    orderListActions,
];
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 InstallmentMyOrderContainer extends Component {

    constructor(props) {
        super(props);
        this.onEndReached = this.onEndReached.bind(this);
        this.onSelectType = this.onSelectType.bind(this);
        this.onPressOrder = this.onPressOrder.bind(this);
        this._reloadPage = this._reloadPage.bind(this);
    }

    _reloadPage() {
        this.props.actions.getOrderList();
    }

    componentDidMount() {
        this.props.actions.selectOrderType(1);

    }

    onEndReached(){
        InteractionManager.runAfterInteractions(() => {
            this.props.actions.getOrderList();
        });
    }

    onSelectType(type){
        this.props.actions.selectOrderType(type);
    }

    onPressOrder(orderCode){
        this.props.actions.gotoOrderDetail(orderCode);
    }

    render() {

        let {isFetching, error, currentOrderType, currentOrderList} = this.props.myOrderList;

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

        return (
            <MyOrderList
                style={styles.container}
                isFetching={isFetching}
                orderType={currentOrderType}
                orderList={currentOrderList}
                onSelectType={this.onSelectType}
                onPressOrder={this.onPressOrder}
                onEndReached={this.onEndReached}
            />
        );
    }
}
let styles = StyleSheet.create({
    container: {
        flex: 1,
    },


});

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