From 714115e264c931d2027c8d52ca87b72c7a361887 Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Tue, 8 Aug 2017 22:07:30 +0200 Subject: [PATCH] EventList: Use X-WP-TotalPages header for paging Also skip year in program section --- src/modules/events/EventListContainer.js | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/modules/events/EventListContainer.js b/src/modules/events/EventListContainer.js index 683dc32..34de20d 100644 --- a/src/modules/events/EventListContainer.js +++ b/src/modules/events/EventListContainer.js @@ -17,14 +17,18 @@ class EventListContainer extends React.Component { events: [], eventsSectioned: [], page: 1, - noMorePages: false, + totalPages: 0, error: null, refreshing: false, }; } _formatDate(time) { - return moment(time).format('ll'); + const m = moment(time); + if(moment().year() === m.year() ) { + return m.format('D. MMM') + } + return m.format('ll'); } _toSectionFormat(events) { @@ -50,14 +54,14 @@ class EventListContainer extends React.Component { this.setState({ page: 1, refreshing: true, - noMorePages: false, + totalPages: 1, }, () => { this.fetchEvents() }); }; handleLoadMore = () => { - if(this.state.noMorePages || this.state.loading) { + if(this.state.page >= this.state.totalPages || this.state.loading) { return; } this.setState({ @@ -73,14 +77,11 @@ class EventListContainer extends React.Component { this.setState({ loading: true }); fetch(url) - .then(res => res.json()) .then(res => { - if(res.code === 'rest_post_invalid_page_number') { - this.setState({ - noMorePages: true - }); - } - + this.setState({totalPages: parseInt(res.headers.get('x-wp-totalpages'))}); + return res.json(); + }) + .then(res => { this.setState({ events: page === 1 ? res : [...this.state.events, ...res], eventsSectioned: page === 1 ? this._toSectionFormat(res) : this._toSectionFormat([...this.state.events, ...res]),