NameAuthenContainer.js 3.52 KB
'use strict'

import React, {Component} from "react";
import ReactNative, {StyleSheet, View, NativeModules, DeviceEventEmitter} from "react-native";
import {bindActionCreators} from "redux";
import {connect} from "react-redux";
import {Map} from "immutable";
import TimerMixin from 'react-timer-mixin';

import * as allianceActions from '../reducers/alliance/allianceActions';

import NameAuthen from "../components/NameAuthen";
import AllianceService from '../services/AllianceService';

const actions = [
  allianceActions
];

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 NameAuthenContainer extends Component {
    constructor(props) {
        super(props);

        this.bindIdentityCard = this.bindIdentityCard.bind(this);
        this.showLoading = this.showLoading.bind(this);
        this.hideToastMessage = this.hideToastMessage.bind(this);
    }

    componentDidMount() {

    }

    componentWillUnmount() {
        this.timer && TimerMixin.clearTimeout(this.timer);
    }

    showLoading(show){
      this.props.actions.showLoading(show);
    }

    hideToastMessage(){
      this.props.actions.hideToastMessage();
    }

    bindIdentityCard(frontIDCardImageUri, backIDCardImageUri) {
      this.showLoading(true);

      let param = [{code: 0,imageUri:frontIDCardImageUri.replace('file://','')},{code: 1,imageUri:backIDCardImageUri.replace('file://','')}];
      NativeModules.YH_MarketHelper && NativeModules.YH_MarketHelper.postIDCardImage(param).then(data => {
            let list = data;
            let cardFrontUrl = '';
            let cardBackUrl = '';
            for (let i = 0; i < list.length; i++) {
              const element = list[i];
              if(element.code == 0){
                cardFrontUrl = element.result;
              }else if(element.code == 1){
                cardBackUrl = element.result;
              }
            }

            this.showLoading(false);

            if(cardFrontUrl.length <= 0 || cardBackUrl.length <= 0){
              this.props.actions.showToastMessage('图片上传失败!请重试!');
              return;
            }

            this.props.actions.bindIdentityCard(cardFrontUrl, cardBackUrl, (json) => {

              this.timer = TimerMixin.setTimeout(() => {
                  ReactNative.NativeModules.YH_CommonHelper.goBack();
                  //绑定成功后更新绑定状态
                  DeviceEventEmitter.emit('IdentityCardBindSuccessEvent');
              }, 1000);

            });
      })
      .catch(error => {
        this.showLoading(false);
        this.props.actions.showToastMessage(error.message || '网络请求错误');
      });
    }

    render() {
        return (
          <View style={styles.container}>
              <NameAuthen
                bindIdentityCard={this.bindIdentityCard}
                showLoading={this.showLoading}
                isShowLoading={this.props.alliance.isShowLoading}
                isShowToast={this.props.alliance.isShowToast}
                toastMessage={this.props.alliance.toastMessage}
                hideToastMessage={this.hideToastMessage}/>
          </View>
        );
    }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
})

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