Merge branch 'greg/dev' into 'master'

Greg/dev

See merge request !58
This commit is contained in:
Lucas 2017-04-22 08:22:31 +00:00
commit e6aad2614e
2 changed files with 34 additions and 17 deletions

View File

@ -88,7 +88,7 @@ const ShowListPolochon = (props) => (
<ShowList {...props} showsUrl='/shows/polochon'/> <ShowList {...props} showsUrl='/shows/polochon'/>
) )
const ShowListWishlisted = (props) => ( const ShowListWishlisted = (props) => (
<MovieList {...props} moviesUrl='/wishlist/shows'/> <ShowList {...props} showsUrl='/wishlist/shows'/>
) )
ReactDOM.render(( ReactDOM.render((

View File

@ -9,34 +9,51 @@ import ListPoster from './poster'
import Loader from '../loader/loader' import Loader from '../loader/loader'
const DEFAULT_LIST_SIZE = 30;
const DEFAULT_ADD_EXTRA_ITEMS = 30;
export default class ListPosters extends React.Component { export default class ListPosters extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
items: 30, items: 0,
hasMore: true, hasMore: false,
}; };
this.loadMore = this.loadMore.bind(this); this.loadMore = this.loadMore.bind(this);
} }
loadMore() { loadMore() {
if (!this.state.hasMore || this.props.data.length === 0) { // Nothing to do if the app is loading
return if (this.props.loading) {
return;
} }
const addItems = 30; if (!this.props.data.length) {
if (this.state.items + addItems >= this.props.data.length) { return;
this.setState({ }
items: this.props.data.length,
hasMore: false, this.setState(this.getNextState(this.props));
}); }
} else { getNextState(props) {
this.setState({ let totalListSize = props.data.length;
items: this.state.items + addItems, let currentListSize = this.state.items;
hasMore: true, let nextListSize = currentListSize + DEFAULT_ADD_EXTRA_ITEMS;
}); let hasMore = true;
if (nextListSize >= totalListSize) {
nextListSize = totalListSize;
hasMore = false;
}
return {
items: nextListSize,
hasMore: hasMore,
};
}
componentWillReceiveProps(nextProps) {
if (this.props.data.length !== nextProps.data.length) {
this.setState(this.getNextState(nextProps));
} }
} }
render() { render() {
let elmts = this.props.data.slice(); let elmts = this.props.data.slice();
const listSize = elmts.length; const listSize = elmts.length;