diff --git a/src/api/common.js b/src/api/common.js index 00b4f256..374221ed 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -43,10 +43,14 @@ export function getList(options) { } }).then((res) => { let body = getJsonBody(res.body); - let lastPage = Math.ceil( body.total_count / options.params.rows ); + let totalCount = _.get(body, 'total_count', 0); + let lastPage = Math.ceil( totalCount / options.params.rows ); if(options.all === true) { lastPage = 1; } + if(lastPage === 0) { + lastPage = null; + } resolve({ items: _.get(body, options.root, []), lastPage: lastPage diff --git a/src/api/conversations.js b/src/api/conversations.js index 60f07c9f..8f4ef4f8 100644 --- a/src/api/conversations.js +++ b/src/api/conversations.js @@ -10,18 +10,20 @@ export function getConversations(options) { let type = _.get(options, 'type', null); let params ={ subscriber_id: _.get(options, 'subscriberId'), - page: _.get(options, 'page', 1), - rows: _.get(options, 'rows', 25), order_by: _.get(options, 'order_by', 'timestamp'), - order_by_direction: 'desc' + order_by_direction: 'desc', + no_count: true, + page: _.get(options, 'page', 1), + rows: _.get(options, 'rows', 25) }; - if(type !== null) { + if (type !== null) { params.type = type; } getList({ path: 'api/conversations/', root: '_embedded.ngcp:conversations', - params: params + params: params, + all: false }).then((list)=>{ resolve(list); }).catch((err)=>{ diff --git a/src/components/pages/Conversations/Conversations.vue b/src/components/pages/Conversations/Conversations.vue index 1180e5a1..25491f68 100644 --- a/src/components/pages/Conversations/Conversations.vue +++ b/src/components/pages/Conversations/Conversations.vue @@ -41,7 +41,7 @@ /> scroll.getScrollHeight(this.$refs.page.$el) - window.innerHeight + 30) { this.scrollEventEmitted = true; - this.nextPage(); + this.nextPage(this.selectedTab); } else if(data.position <= scroll.getScrollHeight(this.$refs.page.$el) - window.innerHeight + 30) { this.scrollEventEmitted = false; diff --git a/src/store/conversations.js b/src/store/conversations.js index d1155ba9..83090183 100644 --- a/src/store/conversations.js +++ b/src/store/conversations.js @@ -58,7 +58,7 @@ export default { playVoiceMailStates: {}, playVoiceMailErrors: {}, currentPage: 0, - lastPage: null, + reachedLastPage: false, nextPageState: RequestState.initiated, nextPageError: null, items: [], @@ -88,8 +88,8 @@ export default { currentPage(state) { return state.currentPage; }, - lastPage(state) { - return state.lastPage; + isLastPage(state) { + return state.reachedLastPage; }, rowsAlreadyLoaded(state) { return state.items.length; @@ -174,7 +174,7 @@ export default { resetList(state) { state.items = []; state.currentPage = 0; - state.lastPage = null; + state.reachedLastPage = false; }, nextPageRequesting(state) { state.nextPageState = RequestState.requesting; @@ -184,7 +184,7 @@ export default { state.nextPageState = RequestState.succeeded; state.nextPageError = null; state.items = state.items.concat(items.items); - state.lastPage = items.lastPage; + state.reachedLastPage = items.items.length === 0; state.currentPage = state.currentPage + 1; linkCallsWithSameId(state); }, @@ -252,12 +252,11 @@ export default { }); }, nextPage(context, type) { - let page = context.getters.currentPage + 1; - if(context.getters.lastPage === null || page <= context.getters.lastPage) { + if (!context.getters.isLastPage) { context.commit('nextPageRequesting'); getConversations({ subscriberId: context.getters.getSubscriberId, - page: page, + page: context.getters.currentPage + 1, rows: ROWS_PER_PAGE, type: type }).then((result) => {