...
|
...
|
@@ -7,6 +7,7 @@ import GetPurchaseCell from './GetPurchaseCell'; |
|
|
import InvalidLimitCodeTitle from './InvalidLimitCodeTitle';
|
|
|
import LimitCodeProductsCell from './LimitCodeProductsCell';
|
|
|
import LoadingIndicator from '../../../common/components/LoadingIndicator';
|
|
|
import Swipeable from 'react-native-swipeable';
|
|
|
|
|
|
import ReactNative, {
|
|
|
View,
|
...
|
...
|
@@ -29,11 +30,23 @@ export default class PurchaseCode extends Component { |
|
|
|
|
|
this.renderRow = this.renderRow.bind(this);
|
|
|
this.renderSectionHeader = this.renderSectionHeader.bind(this);
|
|
|
this.handleScroll = this.handleScroll.bind(this);
|
|
|
this.onOpen = this.onOpen.bind(this);
|
|
|
this.onClose = this.onClose.bind(this);
|
|
|
this.onPressDelete = this.onPressDelete.bind(this);
|
|
|
|
|
|
this.dataSource = new ListView.DataSource({
|
|
|
rowHasChanged: (r1, r2) => !Immutable.is(r1, r2),
|
|
|
sectionHeaderHasChanged: (s1, s2) => !Immutable.is(s1, s2),
|
|
|
});
|
|
|
|
|
|
this.state = {
|
|
|
currentlyOpenSwipeable: null,
|
|
|
isSwiping: false,
|
|
|
showFooter: false,
|
|
|
};
|
|
|
|
|
|
this.swipeable = {};
|
|
|
}
|
|
|
|
|
|
shouldComponentUpdate(nextProps){
|
...
|
...
|
@@ -45,6 +58,54 @@ export default class PurchaseCode extends Component { |
|
|
}
|
|
|
}
|
|
|
|
|
|
componentWillReceiveProps(nextProps) {
|
|
|
|
|
|
}
|
|
|
|
|
|
handleScroll() {
|
|
|
const {currentlyOpenSwipeable} = this.state;
|
|
|
|
|
|
if (currentlyOpenSwipeable) {
|
|
|
currentlyOpenSwipeable.recenter();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
onOpen(event, gestureState, swipeable) {
|
|
|
const {currentlyOpenSwipeable} = this.state;
|
|
|
if (currentlyOpenSwipeable && currentlyOpenSwipeable !== swipeable) {
|
|
|
currentlyOpenSwipeable.recenter();
|
|
|
}
|
|
|
|
|
|
this.setState({currentlyOpenSwipeable: swipeable});
|
|
|
}
|
|
|
|
|
|
onClose() {
|
|
|
this.setState({currentlyOpenSwipeable: null});
|
|
|
}
|
|
|
|
|
|
rightButtons(rowData, rowID) {
|
|
|
const rightButtons = [
|
|
|
<TouchableOpacity activeOpacity={1}
|
|
|
style={{ width: width,height: Math.ceil((200 / 640) * width), justifyContent: 'center', backgroundColor: 'red'}}
|
|
|
onPress={() => {
|
|
|
this.onPressDelete && this.onPressDelete(rowData, rowID);
|
|
|
}}
|
|
|
>
|
|
|
<Text style={{color: 'white', fontSize: 17, paddingLeft: 20}}>删除</Text>
|
|
|
</TouchableOpacity>,
|
|
|
];
|
|
|
|
|
|
return rightButtons;
|
|
|
}
|
|
|
|
|
|
onPressDelete(rowData, rowID) {
|
|
|
const {currentlyOpenSwipeable} = this.state;
|
|
|
if (currentlyOpenSwipeable) {
|
|
|
currentlyOpenSwipeable.recenter();
|
|
|
}
|
|
|
this.props.onPressDelete && this.props.onPressDelete(rowData, rowID);
|
|
|
}
|
|
|
|
|
|
renderRow(rowData, sectionID, rowID, highlightRow) {
|
|
|
if (sectionID == 'howToGetCode') {
|
|
|
return(
|
...
|
...
|
@@ -52,7 +113,7 @@ export default class PurchaseCode extends Component { |
|
|
);
|
|
|
}else if (sectionID == 'limitCodeProducts') {
|
|
|
return(
|
|
|
<LimitCodeProductsCell resource={rowData} onPressLimitCodeProducts={this.props.onPressLimitCodeProducts}/>
|
|
|
<LimitCodeProductsCell key={'row' + sectionID + rowID} resource={rowData} onPressLimitCodeProducts={this.props.onPressLimitCodeProducts}/>
|
|
|
);
|
|
|
}else if (sectionID == 'invalidLimitCodeProductsTitle') {
|
|
|
let {resource} = this.props;
|
...
|
...
|
@@ -66,8 +127,18 @@ export default class PurchaseCode extends Component { |
|
|
<InvalidLimitCodeTitle />
|
|
|
);
|
|
|
}else if (sectionID == 'invalidLimitCodeProducts') {
|
|
|
let buttons = this.rightButtons(rowData?rowData.toJS():'', rowID);
|
|
|
return(
|
|
|
<LimitCodeProductsCell resource={rowData} onPressLimitCodeProducts={this.props.onPressLimitCodeProducts}/>
|
|
|
<Swipeable
|
|
|
rightButtons={buttons}
|
|
|
rightButtonWidth={70}
|
|
|
onRightButtonsOpenRelease={this.onOpen}
|
|
|
onRightButtonsCloseRelease={this.onClose}
|
|
|
onSwipeStart={() => this.setState({isSwiping: true})}
|
|
|
onSwipeRelease={() => this.setState({isSwiping: false})}
|
|
|
>
|
|
|
<LimitCodeProductsCell key={'row' + sectionID + rowID} resource={rowData} onPressLimitCodeProducts={this.props.onPressLimitCodeProducts}/>
|
|
|
</Swipeable>
|
|
|
);
|
|
|
}
|
|
|
return null;
|
...
|
...
|
@@ -100,11 +171,11 @@ export default class PurchaseCode extends Component { |
|
|
<View style={styles.container}>
|
|
|
{showNoContent?<NoDataView onPressHowToGetCodeLink={this.props.onPressHowToGetCodeLink} onPressMore={this.props.onPressMore}/>:<ListView
|
|
|
ref='PurchaseCode'
|
|
|
contentContainerStyle={styles.contentContainer}
|
|
|
enableEmptySections={true}
|
|
|
dataSource={this.dataSource.cloneWithRowsAndSections(dataSource)}
|
|
|
renderRow={this.renderRow}
|
|
|
renderSectionHeader={this.renderSectionHeader}
|
|
|
onScroll={this.handleScroll}
|
|
|
/>}
|
|
|
<LoadingIndicator
|
|
|
isVisible={isFetching}
|
...
|
...
|
@@ -121,8 +192,4 @@ let styles = StyleSheet.create({ |
|
|
flex: 1,
|
|
|
backgroundColor: '#e5e5e5',
|
|
|
},
|
|
|
contentContainer:{
|
|
|
flexDirection: 'row',
|
|
|
flexWrap: 'wrap',
|
|
|
},
|
|
|
}); |
...
|
...
|
|