From cfe2e6b7a3fdc85637191b0c0a42ac28a6b667aa Mon Sep 17 00:00:00 2001
From: Filipa Lacerda <filipa@gitlab.com>
Date: Tue, 21 Mar 2017 16:09:09 +0000
Subject: [PATCH] Fix loading being shown at the same time at the empty states

---
 .../commit/pipelines/pipelines_table.js       |  7 ++----
 .../vue_pipelines_index/pipelines.js          | 22 +++++++++----------
 .../commit/pipelines/pipelines_spec.js        |  3 +++
 .../vue_pipelines_index/pipelines_spec.js     |  3 +++
 4 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/app/assets/javascripts/commit/pipelines/pipelines_table.js b/app/assets/javascripts/commit/pipelines/pipelines_table.js
index f2c2524908d..7cc82b50d43 100644
--- a/app/assets/javascripts/commit/pipelines/pipelines_table.js
+++ b/app/assets/javascripts/commit/pipelines/pipelines_table.js
@@ -1,5 +1,3 @@
-/* eslint-disable no-new*/
-/* global Flash */
 import Vue from 'vue';
 import PipelinesTableComponent from '../../vue_shared/components/pipelines_table';
 import PipelinesService from '../../vue_pipelines_index/services/pipelines_service';
@@ -50,11 +48,11 @@ export default Vue.component('pipelines-table', {
 
   computed: {
     shouldRenderErrorState() {
-      return this.hasError && !this.pageRequest;
+      return this.hasError && !this.isLoading;
     },
 
     shouldRenderEmptyState() {
-      return !this.state.pipelines.length && !this.pageRequest;
+      return !this.state.pipelines.length && !this.isLoading;
     },
   },
 
@@ -98,7 +96,6 @@ export default Vue.component('pipelines-table', {
         .catch(() => {
           this.hasError = true;
           this.isLoading = false;
-          new Flash('An error occurred while fetching the pipelines, please reload the page again.');
         });
     },
   },
diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js b/app/assets/javascripts/vue_pipelines_index/pipelines.js
index 796fd5b581e..b6721600415 100644
--- a/app/assets/javascripts/vue_pipelines_index/pipelines.js
+++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js
@@ -45,7 +45,7 @@ export default {
       state: this.store.state,
       apiScope: 'all',
       pagenum: 1,
-      pageRequest: false,
+      isLoading: false,
       hasError: false,
     };
   },
@@ -61,7 +61,7 @@ export default {
     },
 
     shouldRenderErrorState() {
-      return this.hasError && !this.pageRequest;
+      return this.hasError && !this.isLoading;
     },
 
     /**
@@ -71,7 +71,7 @@ export default {
     * @return {Boolean}
     */
     shouldRenderEmptyState() {
-      return !this.pageRequest &&
+      return !this.isLoading &&
         !this.hasError &&
         !this.state.pipelines.length &&
         (this.scope === 'all' || this.scope === null);
@@ -83,7 +83,7 @@ export default {
      * @return {Boolean}
      */
     shouldRenderNoPipelinesMessage() {
-      return !this.pageRequest &&
+      return !this.isLoading &&
         !this.hasError &&
         !this.state.pipelines.length &&
         this.scope !== 'all' &&
@@ -92,7 +92,7 @@ export default {
 
     shouldRenderTable() {
       return !this.hasError &&
-        !this.pageRequest && this.state.pipelines.length;
+        !this.isLoading && this.state.pipelines.length;
     },
 
     /**
@@ -101,7 +101,7 @@ export default {
     * @return {Boolean}
     */
     shouldRenderPagination() {
-      return !this.pageRequest &&
+      return !this.isLoading &&
         this.state.pipelines.length &&
         this.state.pageInfo.total > this.state.pageInfo.perPage;
     },
@@ -157,7 +157,7 @@ export default {
       const pageNumber = gl.utils.getParameterByName('page') || this.pagenum;
       const scope = gl.utils.getParameterByName('scope') || this.apiScope;
 
-      this.pageRequest = true;
+      this.isLoading = true;
       return this.service.getPipelines(scope, pageNumber)
         .then(resp => ({
           headers: resp.headers,
@@ -169,11 +169,11 @@ export default {
           this.store.storePagination(response.headers);
         })
         .then(() => {
-          this.pageRequest = false;
+          this.isLoading = false;
         })
         .catch(() => {
           this.hasError = true;
-          this.pageRequest = false;
+          this.isLoading = false;
         });
     },
   },
@@ -183,7 +183,7 @@ export default {
 
       <div
         class="top-area"
-        v-if="!pageRequest && !shouldRenderEmptyState">
+        v-if="!isLoading && !shouldRenderEmptyState">
         <navigation-tabs
           :scope="scope"
           :count="state.count"
@@ -201,7 +201,7 @@ export default {
 
         <div
           class="realtime-loading"
-          v-if="pageRequest">
+          v-if="isLoading">
           <i
             class="fa fa-spinner fa-spin"
             aria-hidden="true" />
diff --git a/spec/javascripts/commit/pipelines/pipelines_spec.js b/spec/javascripts/commit/pipelines/pipelines_spec.js
index 65093e53332..bc2e092db65 100644
--- a/spec/javascripts/commit/pipelines/pipelines_spec.js
+++ b/spec/javascripts/commit/pipelines/pipelines_spec.js
@@ -34,6 +34,7 @@ describe('Pipelines table in Commits and Merge requests', () => {
 
         setTimeout(() => {
           expect(component.$el.querySelector('.empty-state')).toBeDefined();
+          expect(component.$el.querySelector('.realtime-loading')).toBe(null);
           done();
         }, 1);
       });
@@ -63,6 +64,7 @@ describe('Pipelines table in Commits and Merge requests', () => {
 
         setTimeout(() => {
           expect(component.$el.querySelectorAll('table > tbody > tr').length).toEqual(1);
+          expect(component.$el.querySelector('.realtime-loading')).toBe(null);
           done();
         }, 0);
       });
@@ -93,6 +95,7 @@ describe('Pipelines table in Commits and Merge requests', () => {
 
       setTimeout(() => {
         expect(component.$el.querySelector('.js-pipelines-error-state')).toBeDefined();
+        expect(component.$el.querySelector('.realtime-loading')).toBe(null);
         done();
       }, 0);
     });
diff --git a/spec/javascripts/vue_pipelines_index/pipelines_spec.js b/spec/javascripts/vue_pipelines_index/pipelines_spec.js
index b57761e3b12..725f6cb2d7a 100644
--- a/spec/javascripts/vue_pipelines_index/pipelines_spec.js
+++ b/spec/javascripts/vue_pipelines_index/pipelines_spec.js
@@ -41,6 +41,7 @@ describe('Pipelines', () => {
 
         setTimeout(() => {
           expect(component.$el.querySelector('.table-holder')).toBeDefined();
+          expect(component.$el.querySelector('.realtime-loading')).toBe(null);
           done();
         });
       });
@@ -72,6 +73,7 @@ describe('Pipelines', () => {
 
         setTimeout(() => {
           expect(component.$el.querySelector('.empty-state')).toBeDefined();
+          expect(component.$el.querySelector('.realtime-loading')).toBe(null);
           done();
         });
       });
@@ -104,6 +106,7 @@ describe('Pipelines', () => {
 
       setTimeout(() => {
         expect(component.$el.querySelector('.js-pipelines-error-state')).toBeDefined();
+        expect(component.$el.querySelector('.realtime-loading')).toBe(null);
         done();
       });
     });
-- 
GitLab