diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-25 03:06:12 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-25 03:06:12 +0300 |
commit | 504ab1e32cbd3a529fe61f6c9a30823febce796c (patch) | |
tree | 3f5b7548465cf85bc41b13d36fbd008a271f23e7 | |
parent | 150effab274651b3a8d2041e64ced734d1f3a349 (diff) |
Add latest changes from gitlab-org/gitlab@master
-rw-r--r-- | Gemfile.lock | 4 | ||||
-rw-r--r-- | app/assets/javascripts/lib/utils/axios_utils.js | 15 | ||||
-rw-r--r-- | app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js | 16 | ||||
-rw-r--r-- | lib/gitlab/gon_helper.rb | 4 | ||||
-rw-r--r-- | spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js | 37 | ||||
-rw-r--r-- | spec/javascripts/frequent_items/components/app_spec.js | 7 |
6 files changed, 2 insertions, 81 deletions
diff --git a/Gemfile.lock b/Gemfile.lock index 3142ba094cd..404c2d550bd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -108,7 +108,7 @@ GEM binding_ninja (0.2.3) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - bootsnap (1.4.4) + bootsnap (1.4.5) msgpack (~> 1.0) bootstrap_form (4.2.0) actionpack (>= 5.0) @@ -586,7 +586,7 @@ GEM mini_mime (1.0.1) mini_portile2 (2.4.0) minitest (5.11.3) - msgpack (1.3.0) + msgpack (1.3.1) multi_json (1.13.1) multi_xml (0.6.0) multipart-post (2.0.0) diff --git a/app/assets/javascripts/lib/utils/axios_utils.js b/app/assets/javascripts/lib/utils/axios_utils.js index a04fe609015..c17f62c671c 100644 --- a/app/assets/javascripts/lib/utils/axios_utils.js +++ b/app/assets/javascripts/lib/utils/axios_utils.js @@ -1,6 +1,5 @@ import axios from 'axios'; import csrf from './csrf'; -import suppressAjaxErrorsDuringNavigation from './suppress_ajax_errors_during_navigation'; axios.defaults.headers.common[csrf.headerKey] = csrf.token; // Used by Rails to check if it is a valid XHR request @@ -26,20 +25,6 @@ axios.interceptors.response.use( }, ); -let isUserNavigating = false; -window.addEventListener('beforeunload', () => { - isUserNavigating = true; -}); - -// Ignore AJAX errors caused by requests -// being cancelled due to browser navigation -const { gon } = window; -const featureFlagEnabled = gon && gon.features && gon.features.suppressAjaxNavigationErrors; -axios.interceptors.response.use( - response => response, - err => suppressAjaxErrorsDuringNavigation(err, isUserNavigating, featureFlagEnabled), -); - export default axios; /** diff --git a/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js b/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js deleted file mode 100644 index 4c61da9b862..00000000000 --- a/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * An Axios error interceptor that suppresses AJAX errors caused - * by the request being cancelled when the user navigates to a new page - */ -export default (err, isUserNavigating, featureFlagEnabled) => { - if (featureFlagEnabled && isUserNavigating && err.code === 'ECONNABORTED') { - // If the user is navigating away from the current page, - // prevent .then() and .catch() handlers from being - // called by returning a Promise that never resolves - return new Promise(() => {}); - } - - // The error is not related to browser navigation, - // so propagate the error - return Promise.reject(err); -}; diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb index 2616a19fdaa..92917028851 100644 --- a/lib/gitlab/gon_helper.rb +++ b/lib/gitlab/gon_helper.rb @@ -38,10 +38,6 @@ module Gitlab gon.current_user_fullname = current_user.name gon.current_user_avatar_url = current_user.avatar_url end - - # Initialize gon.features with any flags that should be - # made globally available to the frontend - push_frontend_feature_flag(:suppress_ajax_navigation_errors, default_enabled: true) end # Exposes the state of a feature flag to the frontend code. diff --git a/spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js b/spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js deleted file mode 100644 index 89e8459d594..00000000000 --- a/spec/frontend/lib/utils/suppress_ajax_errors_during_navigation_spec.js +++ /dev/null @@ -1,37 +0,0 @@ -import suppressAjaxErrorsDuringNavigation from '~/lib/utils/suppress_ajax_errors_during_navigation'; -import waitForPromises from 'helpers/wait_for_promises'; - -describe('suppressAjaxErrorsDuringNavigation', () => { - const OTHER_ERR_CODE = 'foo'; - const NAV_ERR_CODE = 'ECONNABORTED'; - - it.each` - isFeatureFlagEnabled | isUserNavigating | code - ${false} | ${false} | ${OTHER_ERR_CODE} - ${false} | ${false} | ${NAV_ERR_CODE} - ${false} | ${true} | ${OTHER_ERR_CODE} - ${false} | ${true} | ${NAV_ERR_CODE} - ${true} | ${false} | ${OTHER_ERR_CODE} - ${true} | ${false} | ${NAV_ERR_CODE} - ${true} | ${true} | ${OTHER_ERR_CODE} - `('should return a rejected Promise', ({ isFeatureFlagEnabled, isUserNavigating, code }) => { - const err = { code }; - const actual = suppressAjaxErrorsDuringNavigation(err, isUserNavigating, isFeatureFlagEnabled); - - return expect(actual).rejects.toBe(err); - }); - - it('should return a Promise that never resolves', () => { - const err = { code: NAV_ERR_CODE }; - const actual = suppressAjaxErrorsDuringNavigation(err, true, true); - - const thenCallback = jest.fn(); - const catchCallback = jest.fn(); - actual.then(thenCallback).catch(catchCallback); - - return waitForPromises().then(() => { - expect(thenCallback).not.toHaveBeenCalled(); - expect(catchCallback).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/spec/javascripts/frequent_items/components/app_spec.js b/spec/javascripts/frequent_items/components/app_spec.js index 36dd8604d08..6814f656f5d 100644 --- a/spec/javascripts/frequent_items/components/app_spec.js +++ b/spec/javascripts/frequent_items/components/app_spec.js @@ -236,15 +236,8 @@ describe('Frequent Items App Component', () => { .then(() => { expect(vm.$el.querySelector('.loading-animation')).toBeDefined(); }) - - // This test waits for multiple ticks in order to allow the responses to - // propagate through each interceptor installed on the Axios instance. - // This shouldn't be necessary; this test should be refactored to avoid this. - // https://gitlab.com/gitlab-org/gitlab/issues/32479 - .then(vm.$nextTick) .then(vm.$nextTick) .then(vm.$nextTick) - .then(() => { expect(vm.$el.querySelectorAll('.frequent-items-list-container li').length).toBe( mockSearchedProjects.length, |