Browse Source

SONARCLOUD-379 Display user sync warning message only if there are other members already

tags/7.7
Grégoire Aubert 5 years ago
parent
commit
27bd7ce2f9

+ 12
- 2
server/sonar-web/src/main/js/apps/organizationMembers/MembersPageHeader.tsx View File

@@ -53,7 +53,12 @@ export default function MembersPageHeader(props: Props) {
{almKey &&
isGithub(almKey) &&
!showSyncNotif && (
<SyncMemberForm organization={organization} refreshMembers={refreshMembers} />
<SyncMemberForm
buttonText={translate('organization.members.config_synchro')}
hasOtherMembers={members && members.length > 1}
organization={organization}
refreshMembers={refreshMembers}
/>
)}
{!hasMemberSync && (
<div className="display-inline-block spacer-left spacer-bottom">
@@ -91,7 +96,12 @@ export default function MembersPageHeader(props: Props) {
translate('organization', almKey)
)}
<span className="spacer-left">
<SyncMemberForm organization={organization} refreshMembers={refreshMembers} />
<SyncMemberForm
buttonText={translate('configure')}
hasOtherMembers={members && members.length > 1}
organization={organization}
refreshMembers={refreshMembers}
/>
</span>
</Alert>
)}

+ 14
- 7
server/sonar-web/src/main/js/apps/organizationMembers/SyncMemberForm.tsx View File

@@ -30,7 +30,9 @@ import { translate, translateWithParameters } from '../../helpers/l10n';
import { fetchOrganization } from '../../store/rootActions';

interface Props {
buttonText: string;
fetchOrganization: (key: string) => void;
hasOtherMembers?: boolean;
organization: T.Organization;
refreshMembers: () => Promise<void>;
}
@@ -91,8 +93,9 @@ export class SyncMemberForm extends React.PureComponent<Props, State> {

renderModalBody = () => {
const { membersSync } = this.state;
const { organization } = this.props;
const { hasOtherMembers, organization } = this.props;
const almKey = organization.alm && sanitizeAlmId(organization.alm.key);
const showWarning = hasOtherMembers && organization.alm && !organization.alm.membersSync;
return (
<div className="display-flex-stretch big-spacer-top">
<RadioCard
@@ -136,11 +139,15 @@ export class SyncMemberForm extends React.PureComponent<Props, State> {
<li>{translate('organization.members.management.choose_members_permissions')}</li>
</ul>
</div>
{(!organization.alm || !organization.alm.membersSync) && (
<Alert className="big-spacer-top" variant="warning">
{translate('organization.members.management.automatic.warning')}
</Alert>
)}
{almKey &&
showWarning && (
<Alert className="big-spacer-top" variant="warning">
{translateWithParameters(
'organization.members.management.automatic.warning_x',
translate('organization', almKey)
)}
</Alert>
)}
</RadioCard>
</div>
);
@@ -159,7 +166,7 @@ export class SyncMemberForm extends React.PureComponent<Props, State> {
modalHeaderDescription={this.renderModalDescription()}
onConfirm={this.handleConfirm}
size={'medium'}>
{({ onClick }) => <Button onClick={onClick}>{translate('configure')}</Button>}
{({ onClick }) => <Button onClick={onClick}>{this.props.buttonText}</Button>}
</ConfirmButton>
);
}

+ 2
- 0
server/sonar-web/src/main/js/apps/organizationMembers/__tests__/SyncMemberForm-test.tsx View File

@@ -69,7 +69,9 @@ it('should allow to switch to manual mode', async () => {
function shallowRender(props: Partial<SyncMemberForm['props']> = {}) {
return shallow<SyncMemberForm>(
<SyncMemberForm
buttonText="configure"
fetchOrganization={jest.fn()}
hasOtherMembers={true}
organization={mockOrganizationWithAlm()}
refreshMembers={jest.fn().mockResolvedValue({})}
{...props}

+ 2
- 0
server/sonar-web/src/main/js/apps/organizationMembers/__tests__/__snapshots__/MembersPageHeader-test.tsx.snap View File

@@ -174,6 +174,8 @@ exports[`should render for GitHub bound organization without sync 1`] = `
className="spacer-left"
>
<Connect(SyncMemberForm)
buttonText="configure"
hasOtherMembers={false}
organization={
Object {
"actions": Object {

+ 1
- 1
server/sonar-web/src/main/js/apps/organizationMembers/__tests__/__snapshots__/SyncMemberForm-test.tsx.snap View File

@@ -63,7 +63,7 @@ exports[`should allow to switch to automatic mode 1`] = `
className="big-spacer-top"
variant="warning"
>
organization.members.management.automatic.warning
organization.members.management.automatic.warning_x.organization.github
</Alert>
</RadioCard>
</div>

+ 1
- 1
sonar-core/src/main/resources/org/sonar/l10n/core.properties View File

@@ -2689,7 +2689,7 @@ organization.members.management.manual.add_members_manually=Admin add members ma
organization.members.management.automatic=Automatic sync with {0}
organization.members.management.automatic.synchronized_from_x=Members are synchronized automatically from your {0}
organization.members.management.automatic.members_changes_reflected.github=If you add or remove a member on GitHub, SonarCloud immediately reflects the changes
organization.members.management.automatic.warning=This will override your current Members and Permissions configuration
organization.members.management.automatic.warning_x=This will override your current Members, removing those that are not part of your {0}.
organization.members.management.choose_members_permissions=Admin manages permissions for each member in SonarCloud
organization.paid_plan.badge=Paid plan
organization.default_visibility_of_new_projects=Default visibility of new projects:

Loading…
Cancel
Save