MineGuang.js 2.67 KB
'use strict'

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

import {Map} from 'immutable';
import ListCell from '../../guang/components/list/ListCell';
import LoadingIndicator from '../../common/components/LoadingIndicator';
import LoadMoreIndicator from '../../common/components/LoadMoreIndicator';


export default class MineGuang extends Component {
    constructor(props) {
        super(props);
        this.renderRow = this.renderRow.bind(this);
        this.dataSource = new ListView.DataSource({
            rowHasChanged: (r1, r2) => !Immutable.is(r1, r2),
            sectionHeaderHasChanged: (s1, s2) => !Immutable.is(s1, s2),
        });
    }

    renderRow(rowData,sectionID,rowID) {
        return(
            <ListCell
                resource={rowData}
                rowID={rowID}
                onPressCell={this.props.onPressCell}
                onPressShare={this.props.onPressShare}
                onPressLike={this.props.onPressLike}
                onPressHeader={this.props.onPressHeader}
                hiddenTagView={true}
            />
        );
    }

    render() {
        let {resource} = this.props;
        let {isFetching, favArticleList} = resource;
        if (!favArticleList || !favArticleList.size) {
            return <LoadingIndicator
                isVisible={isFetching}
            />;
        }
        return (
            <View style={styles.container}>
                <ListView
                    contentContainerStyle={styles.contentContainer}
                    enableEmptySections={true}
                    dataSource={this.dataSource.cloneWithRows(favArticleList.toArray())}
                    renderRow={this.renderRow}
                    onEndReached={() => {
                        if (favArticleList && favArticleList.size) {
                            this.props.onEndReached && this.props.onEndReached();
                        }
                    }}
                    renderFooter={()=>{
                        if (favArticleList && favArticleList.size && isFetching) {
                            return <LoadMoreIndicator
                                    isVisible={true}
                                    animating={true}
                                />;
                        } else {
                            return null;
                        }
                    }}
                />
            </View>
        );
    }
}

let {width, height} = Dimensions.get('window');

let styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: 'white',
    },
});