From: Grégoire Aubert Date: Wed, 26 Apr 2017 13:41:47 +0000 (+0200) Subject: SONAR-8992 Fix members add form, show only non members X-Git-Tag: 6.4-RC1~153 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=61da4f3531f26c70abc767cc3f584effcbfe0576;p=sonarqube.git SONAR-8992 Fix members add form, show only non members --- diff --git a/server/sonar-web/src/main/js/apps/organizations/components/OrganizationMembers.js b/server/sonar-web/src/main/js/apps/organizations/components/OrganizationMembers.js index 49eac0e3fa7..c4e3f6bcd25 100644 --- a/server/sonar-web/src/main/js/apps/organizations/components/OrganizationMembers.js +++ b/server/sonar-web/src/main/js/apps/organizations/components/OrganizationMembers.js @@ -84,7 +84,11 @@ export default class OrganizationMembers extends React.PureComponent { {organization.canAdmin &&
- +
} diff --git a/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/MembersListItem-test.js.snap b/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/MembersListItem-test.js.snap index 153c98f4d35..7d5d1fd90e6 100644 --- a/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/MembersListItem-test.js.snap +++ b/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/MembersListItem-test.js.snap @@ -1,40 +1,53 @@ -exports[`test should groups at 0 if the groupCount field is not defined (just added user) 1`] = ` +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`should groups at 0 if the groupCount field is not defined (just added user) 1`] = ` + className="thin nowrap" + > + size={36} + /> + className="nowrap text-middle" + > John Doe + className="note little-spacer-left" + > john + className="text-right text-middle" + > organization.members.x_groups.0 + className="nowrap text-middle text-right" + >
+ className="dropdown" + >
    + className="dropdown-menu dropdown-menu-right" + >
  • + } + />
  • + role="separator" + />
  • + } + />
@@ -78,64 +94,79 @@ exports[`test should groups at 0 if the groupCount field is not defined (just ad `; -exports[`test should not render actions and groups for non admin 1`] = ` +exports[`should not render actions and groups for non admin 1`] = ` + className="thin nowrap" + > + size={36} + /> + className="nowrap text-middle" + > Admin Istrator + className="note little-spacer-left" + > admin `; -exports[`test should render actions and groups for admin 1`] = ` +exports[`should render actions and groups for admin 1`] = ` + className="thin nowrap" + > + size={36} + /> + className="nowrap text-middle" + > Admin Istrator + className="note little-spacer-left" + > admin + className="text-right text-middle" + > organization.members.x_groups.3 + className="nowrap text-middle text-right" + >
+ className="dropdown" + >
    + className="dropdown-menu dropdown-menu-right" + >
  • + } + />
  • + role="separator" + />
  • + } + />
diff --git a/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/OrganizationMembers-test.js.snap b/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/OrganizationMembers-test.js.snap index 4c3bdede556..f6da626a33f 100644 --- a/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/OrganizationMembers-test.js.snap +++ b/server/sonar-web/src/main/js/apps/organizations/components/__tests__/__snapshots__/OrganizationMembers-test.js.snap @@ -62,6 +62,13 @@ exports[`should render actions for admin 1`] = ` > diff --git a/server/sonar-web/src/main/js/apps/organizations/components/forms/AddMemberForm.js b/server/sonar-web/src/main/js/apps/organizations/components/forms/AddMemberForm.js index f1fafe1a2e0..4502597be29 100644 --- a/server/sonar-web/src/main/js/apps/organizations/components/forms/AddMemberForm.js +++ b/server/sonar-web/src/main/js/apps/organizations/components/forms/AddMemberForm.js @@ -21,13 +21,15 @@ import React from 'react'; import Modal from 'react-modal'; import UsersSelectSearch from '../../../users/components/UsersSelectSearch'; -import { searchUsers } from '../../../../api/users'; +import { searchMembers } from '../../../../api/organizations'; import { translate } from '../../../../helpers/l10n'; +import type { Organization } from '../../../../store/organizations/duck'; import type { Member } from '../../../../store/organizationsMembers/actions'; type Props = { - memberLogins: Array, - addMember: (member: Member) => void + addMember: (member: Member) => void, + organization: Organization, + memberLogins: Array }; type State = { @@ -50,6 +52,14 @@ export default class AddMemberForm extends React.PureComponent { this.setState({ open: false, selectedMember: undefined }); }; + handleSearch = (query?: string, ps: number): Promise<*> => { + const data = { organization: this.props.organization.key, ps, selected: 'deselected' }; + if (!query) { + return searchMembers(data); + } + return searchMembers({ ...data, q: query }); + }; + handleSubmit = (e: Object) => { e.preventDefault(); if (this.state.selectedMember) { @@ -81,7 +91,7 @@ export default class AddMemberForm extends React.PureComponent { autoFocus={true} selectedUser={this.state.selectedMember} excludedUsers={this.props.memberLogins} - searchUsers={searchUsers} + searchUsers={this.handleSearch} handleValueChange={this.selectedMemberChange} /> diff --git a/server/sonar-web/src/main/js/apps/users/components/UsersSelectSearch.js b/server/sonar-web/src/main/js/apps/users/components/UsersSelectSearch.js index 007a6e05138..f6a9b1ad5ee 100644 --- a/server/sonar-web/src/main/js/apps/users/components/UsersSelectSearch.js +++ b/server/sonar-web/src/main/js/apps/users/components/UsersSelectSearch.js @@ -51,6 +51,7 @@ type State = { const LIST_SIZE = 10; export default class UsersSelectSearch extends React.PureComponent { + mounted: boolean; props: Props; state: State; @@ -59,8 +60,8 @@ export default class UsersSelectSearch extends React.PureComponent { this.handleSearch = debounce(this.handleSearch, 250); this.state = { searchResult: [], isLoading: false, search: '' }; } - componentDidMount() { + this.mounted = true; this.handleSearch(this.state.search); } @@ -70,19 +71,33 @@ export default class UsersSelectSearch extends React.PureComponent { } } + componentWillUnmount() { + this.mounted = false; + } + filterSearchResult = ({ users }: { users: Array