Skip to content

Commit 44fba3d

Browse files
authored
Merge pull request #32 from iMokhles/master
workaround to fix stuck refresh on android + support prop-types package for React15.5 and above
2 parents b0638ec + ac9dc06 commit 44fba3d

File tree

2 files changed

+61
-57
lines changed

2 files changed

+61
-57
lines changed

src/refreshableScrollView.android.js

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -181,26 +181,29 @@ export default class RefreshableScrollView extends ScrollView {
181181
};
182182

183183
renderRefreshHeader() {
184-
if (this.props.customRefreshView) {
184+
if (this.state.refreshTitle !== "Pull to refresh") {
185+
if (this.props.customRefreshView) {
186+
return (
187+
<View style={[defaultHeaderStyles.header, this.props.refreshViewStyle]}>
188+
{this.props.customRefreshView(this.state.refreshStatus, this._offsetY)}
189+
</View>
190+
);
191+
}
192+
185193
return (
186-
<View style={[defaultHeaderStyles.header, this.props.refreshViewStyle]}>
187-
{this.props.customRefreshView(this.state.refreshStatus, this._offsetY)}
194+
<View style={[defaultHeaderStyles.header, this.props.refreshViewStyle, {height: this.state.showRefreshHeader ? this.props.refreshViewHeight : 0}]}>
195+
<View style={defaultHeaderStyles.status}>
196+
{this.renderSpinner()}
197+
<Text style={defaultHeaderStyles.statusTitle}>{this.state.refreshTitle}</Text>
198+
</View>
199+
{this.props.displayDate &&
200+
<Text
201+
style={[defaultHeaderStyles.date, this.props.dateStyle]}>{this.props.dateTitle + this.state.date}</Text>
202+
}
188203
</View>
189204
);
190205
}
191206

192-
return (
193-
<View style={[defaultHeaderStyles.header, this.props.refreshViewStyle, {height: this.state.showRefreshHeader ? this.props.refreshViewHeight : 0}]}>
194-
<View style={defaultHeaderStyles.status}>
195-
{this.renderSpinner()}
196-
<Text style={defaultHeaderStyles.statusTitle}>{this.state.refreshTitle}</Text>
197-
</View>
198-
{this.props.displayDate &&
199-
<Text
200-
style={[defaultHeaderStyles.date, this.props.dateStyle]}>{this.props.dateTitle + this.state.date}</Text>
201-
}
202-
</View>
203-
);
204207
}
205208

206209
renderSpinner() {
@@ -271,4 +274,4 @@ const defaultHeaderStyles = StyleSheet.create({
271274
color: '#333333',
272275
marginTop: 5
273276
}
274-
});
277+
});

src/ultimateListView.js

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, {Component} from "react";
2+
import PropTypes from 'prop-types';
23
import {
34
ActivityIndicator,
45
Dimensions,
@@ -85,63 +86,63 @@ export default class UltimateListView extends Component {
8586
};
8687

8788
static propTypes = {
88-
initialNumToRender: React.PropTypes.number,
89-
horizontal: React.PropTypes.bool,
89+
initialNumToRender: PropTypes.number,
90+
horizontal: PropTypes.bool,
9091

91-
firstLoader: React.PropTypes.bool,
92-
scrollEnabled: React.PropTypes.bool,
93-
onFetch: React.PropTypes.func,
94-
enableEmptySections: React.PropTypes.bool,
92+
firstLoader: PropTypes.bool,
93+
scrollEnabled: PropTypes.bool,
94+
onFetch: PropTypes.func,
95+
enableEmptySections: PropTypes.bool,
9596

9697
//Custom ListView
97-
header: React.PropTypes.func,
98-
item: React.PropTypes.func,
99-
sectionHeaderView: React.PropTypes.func,
100-
paginationFetchingView: React.PropTypes.func,
101-
paginationAllLoadedView: React.PropTypes.func,
102-
paginationWaitingView: React.PropTypes.func,
103-
emptyView: React.PropTypes.func,
104-
separator: React.PropTypes.func,
98+
header: PropTypes.func,
99+
item: PropTypes.func,
100+
sectionHeaderView: PropTypes.func,
101+
paginationFetchingView: PropTypes.func,
102+
paginationAllLoadedView: PropTypes.func,
103+
paginationWaitingView: PropTypes.func,
104+
emptyView: PropTypes.func,
105+
separator: PropTypes.func,
105106

106107
//Refreshable
107-
refreshable: React.PropTypes.bool,
108-
refreshableMode: React.PropTypes.string,
108+
refreshable: PropTypes.bool,
109+
refreshableMode: PropTypes.string,
109110

110111
//RefreshControl
111-
refreshableTitle: React.PropTypes.string,
112-
refreshableColors: React.PropTypes.array,
113-
refreshableProgressBackgroundColor: React.PropTypes.string,
114-
refreshableSize: React.PropTypes.string,
115-
refreshableTintColor: React.PropTypes.string,
116-
customRefreshControl: React.PropTypes.func,
112+
refreshableTitle: PropTypes.string,
113+
refreshableColors: PropTypes.array,
114+
refreshableProgressBackgroundColor: PropTypes.string,
115+
refreshableSize: PropTypes.string,
116+
refreshableTintColor: PropTypes.string,
117+
customRefreshControl: PropTypes.func,
117118

118119
//Advanced RefreshView
119-
refreshableTitlePull: React.PropTypes.string,
120-
refreshableTitleRefreshing: React.PropTypes.string,
121-
refreshableTitleRelease: React.PropTypes.string,
122-
customRefreshView: React.PropTypes.func,
123-
customRefreshViewHeight: React.PropTypes.number,
124-
displayDate: React.PropTypes.bool,
125-
dateFormat: React.PropTypes.string,
126-
dateTitle: React.PropTypes.string,
127-
arrowImage: React.PropTypes.string,
120+
refreshableTitlePull: PropTypes.string,
121+
refreshableTitleRefreshing: PropTypes.string,
122+
refreshableTitleRelease: PropTypes.string,
123+
customRefreshView: PropTypes.func,
124+
customRefreshViewHeight: PropTypes.number,
125+
displayDate: PropTypes.bool,
126+
dateFormat: PropTypes.string,
127+
dateTitle: PropTypes.string,
128+
arrowImage: PropTypes.string,
128129

129130
//Pagination
130-
pagination: React.PropTypes.bool,
131-
autoPagination: React.PropTypes.bool,
132-
allLoadedText: React.PropTypes.string,
131+
pagination: PropTypes.bool,
132+
autoPagination: PropTypes.bool,
133+
allLoadedText: PropTypes.string,
133134

134135
//Spinner
135-
spinnerColor: React.PropTypes.string,
136-
fetchingSpinnerSize: React.PropTypes.any,
137-
waitingSpinnerSize: React.PropTypes.any,
138-
waitingSpinnerText: React.PropTypes.string,
136+
spinnerColor: PropTypes.string,
137+
fetchingSpinnerSize: PropTypes.any,
138+
waitingSpinnerSize: PropTypes.any,
139+
waitingSpinnerText: PropTypes.string,
139140

140141
//Pagination Button
141-
paginationBtnText: React.PropTypes.string,
142+
paginationBtnText: PropTypes.string,
142143

143144
//GridView
144-
numColumns: React.PropTypes.number
145+
numColumns: PropTypes.number
145146
};
146147

147148
constructor(props) {
@@ -514,4 +515,4 @@ const styles = StyleSheet.create({
514515
alignItems: 'flex-start',
515516
flexWrap: 'wrap'
516517
}
517-
});
518+
});

0 commit comments

Comments
 (0)