diff --git a/ee/app/assets/javascripts/external_issues_list/components/external_issues_list_root.vue b/ee/app/assets/javascripts/external_issues_list/components/external_issues_list_root.vue index 65bb35eb659618d64fae666add1bf12dbfcd10bb..3e89e1b2f000c6f74c6c878fe2bd39b4e0b69ac5 100644 --- a/ee/app/assets/javascripts/external_issues_list/components/external_issues_list_root.vue +++ b/ee/app/assets/javascripts/external_issues_list/components/external_issues_list_root.vue @@ -82,11 +82,12 @@ export default { }, showPaginationControls() { return Boolean( - !this.issuesListLoading && - this.issues.length && - (this.pageTokenHistory.length > 0 || !this.isLast), + !this.issuesListLoading && this.issues.length && (this.hasPreviousPage || !this.isLast), ); }, + hasPreviousPage() { + return this.pageTokenHistory.length > 0; + }, hasFiltersApplied() { return Boolean( this.filterParams.project || @@ -111,23 +112,6 @@ export default { }; }, }, - watch: { - nextPageToken() { - this.$apollo.queries.externalIssues.refetch(); - }, - sortedBy() { - this.$apollo.queries.externalIssues.refetch(); - }, - currentState() { - this.$apollo.queries.externalIssues.refetch(); - }, - filterParams: { - deep: true, - handler() { - this.$apollo.queries.externalIssues.refetch(); - }, - }, - }, apollo: { // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties externalIssues: { @@ -213,14 +197,17 @@ export default { return filteredSearchValue; }, + resetPagination() { + this.nextPageToken = null; + this.pageTokenHistory = []; + }, onExternalIssuesQueryError(error, message) { this.errorMessage = message || error.message; Sentry.captureException(error); }, onIssuableListClickTab(selectedIssueState) { - this.nextPageToken = null; - this.pageTokenHistory = []; + this.resetPagination(); this.currentState = selectedIssueState; }, onIssuableListNextPage() { @@ -230,13 +217,12 @@ export default { } }, onIssuableListPreviousPage() { - if (this.pageTokenHistory.length > 0) { + if (this.hasPreviousPage) { this.nextPageToken = this.pageTokenHistory.pop(); } }, onIssuableListSort(selectedSort) { - this.nextPageToken = null; - this.pageTokenHistory = []; + this.resetPagination(); this.sortedBy = selectedSort; }, onIssuableListFilter(filters = []) { @@ -267,8 +253,7 @@ export default { filterParams.labels = labels; } - this.nextPageToken = null; - this.pageTokenHistory = []; + this.resetPagination(); this.filterParams = { ...filterParams, @@ -302,7 +287,7 @@ export default { :show-pagination-controls="showPaginationControls" :use-keyset-pagination="true" :has-next-page="!isLast" - :has-previous-page="pageTokenHistory.length > 0" + :has-previous-page="hasPreviousPage" :default-page-size="$options.defaultPageSize" :url-params="urlParams" label-filter-param="labels"