From: Wouter Admiraal Date: Wed, 17 Jul 2019 07:40:55 +0000 (+0200) Subject: SONAR-12292 Do not debounce the fetchBranchStatus root action X-Git-Tag: 8.0~279 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=87fe29be37cc59cc3cfc4d4a9c9f2939f488ab71;p=sonarqube.git SONAR-12292 Do not debounce the fetchBranchStatus root action --- diff --git a/server/sonar-web/src/main/js/apps/code/components/App.tsx b/server/sonar-web/src/main/js/apps/code/components/App.tsx index 226abca45d4..ce34389013d 100644 --- a/server/sonar-web/src/main/js/apps/code/components/App.tsx +++ b/server/sonar-web/src/main/js/apps/code/components/App.tsx @@ -19,6 +19,7 @@ */ import * as classNames from 'classnames'; import { Location } from 'history'; +import { debounce } from 'lodash'; import * as React from 'react'; import Helmet from 'react-helmet'; import { connect } from 'react-redux'; @@ -71,12 +72,18 @@ interface State { export class App extends React.PureComponent { mounted = false; - state: State = { - breadcrumbs: [], - loading: true, - page: 0, - total: 0 - }; + state: State; + + constructor(props: Props) { + super(props); + this.state = { + breadcrumbs: [], + loading: true, + page: 0, + total: 0 + }; + this.refreshBranchStatus = debounce(this.refreshBranchStatus, 1000); + } componentDidMount() { this.mounted = true; diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx index c4a1ca98825..71e0c6f3c84 100644 --- a/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx +++ b/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import * as key from 'keymaster'; -import { keyBy } from 'lodash'; +import { debounce, keyBy } from 'lodash'; import * as React from 'react'; import Helmet from 'react-helmet'; import { connect } from 'react-redux'; @@ -82,11 +82,17 @@ interface State { export class App extends React.PureComponent { mounted = false; - state: State = { - loading: true, - measures: [], - metrics: {} - }; + state: State; + + constructor(props: Props) { + super(props); + this.state = { + loading: true, + measures: [], + metrics: {} + }; + this.refreshBranchStatus = debounce(this.refreshBranchStatus, 1000); + } componentDidMount() { this.mounted = true; diff --git a/server/sonar-web/src/main/js/apps/issues/components/App.tsx b/server/sonar-web/src/main/js/apps/issues/components/App.tsx index 8885d0ec8b8..aeab5a9b2b8 100644 --- a/server/sonar-web/src/main/js/apps/issues/components/App.tsx +++ b/server/sonar-web/src/main/js/apps/issues/components/App.tsx @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import * as key from 'keymaster'; -import { keyBy, omit, without } from 'lodash'; +import { debounce, keyBy, omit, without } from 'lodash'; import * as React from 'react'; import Helmet from 'react-helmet'; import { FormattedMessage } from 'react-intl'; @@ -175,6 +175,7 @@ export class App extends React.PureComponent { referencedUsers: {}, selected: getOpen(props.location.query) }; + this.refreshBranchStatus = debounce(this.refreshBranchStatus, 1000); } componentDidMount() { diff --git a/server/sonar-web/src/main/js/components/workspace/WorkspaceComponentViewer.tsx b/server/sonar-web/src/main/js/components/workspace/WorkspaceComponentViewer.tsx index 23f0ab0d42d..e33e921db80 100644 --- a/server/sonar-web/src/main/js/components/workspace/WorkspaceComponentViewer.tsx +++ b/server/sonar-web/src/main/js/components/workspace/WorkspaceComponentViewer.tsx @@ -19,6 +19,7 @@ */ import * as React from 'react'; import { connect } from 'react-redux'; +import { debounce } from 'lodash'; import { scrollToElement } from 'sonar-ui-common/helpers/scrolling'; import { getParents } from '../../api/components'; import { isPullRequest, isShortLivingBranch } from '../../helpers/branches'; @@ -39,6 +40,11 @@ export interface Props extends T.Omit { container?: HTMLElement | null; + constructor(props: Props) { + super(props); + this.refreshBranchStatus = debounce(this.refreshBranchStatus, 1000); + } + componentDidMount() { if (document.documentElement) { document.documentElement.classList.add('with-workspace'); diff --git a/server/sonar-web/src/main/js/store/__tests__/rootActions-test.tsx b/server/sonar-web/src/main/js/store/__tests__/rootActions-test.tsx index 4828f7559f0..d4f9c887b64 100644 --- a/server/sonar-web/src/main/js/store/__tests__/rootActions-test.tsx +++ b/server/sonar-web/src/main/js/store/__tests__/rootActions-test.tsx @@ -21,8 +21,6 @@ import { mockLongLivingBranch, mockQualityGateStatusCondition } from '../../help import { registerBranchStatusAction } from '../branches'; import { fetchBranchStatus, registerBranchStatus } from '../rootActions'; -jest.useFakeTimers(); - jest.mock('../branches', () => ({ ...require.requireActual('../branches'), registerBranchStatusAction: jest.fn() @@ -65,8 +63,6 @@ describe('branch store actions', () => { const dispatch = jest.fn(); fetchBranchStatus(branchLike, component)(dispatch); - - jest.runAllTimers(); await new Promise(setImmediate); expect(registerBranchStatusAction).toBeCalledWith( diff --git a/server/sonar-web/src/main/js/store/rootActions.ts b/server/sonar-web/src/main/js/store/rootActions.ts index f7ffb9022cb..f77391118cb 100644 --- a/server/sonar-web/src/main/js/store/rootActions.ts +++ b/server/sonar-web/src/main/js/store/rootActions.ts @@ -17,7 +17,6 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { debounce } from 'lodash'; import { InjectedRouter } from 'react-router'; import { Dispatch } from 'redux'; import * as auth from '../api/auth'; @@ -67,7 +66,7 @@ export const fetchOrganization = (key: string) => (dispatch: Dispatch) => { }; export function fetchBranchStatus(branchLike: T.BranchLike, projectKey: string) { - return debounce((dispatch: Dispatch) => { + return (dispatch: Dispatch) => { getQualityGateProjectStatus({ projectKey, ...getBranchLikeQuery(branchLike) }).then( projectStatus => { const { ignoredConditions, status } = projectStatus; @@ -80,7 +79,7 @@ export function fetchBranchStatus(branchLike: T.BranchLike, projectKey: string) dispatch(addGlobalErrorMessage('Fetching Quality Gate status failed')); } ); - }, 1000); + }; } export function doLogin(login: string, password: string) {