Files
gerrit/polygerrit-ui/app/utils/account-util.ts
Ben Rohlfs 669433fef1 Get rid of the "first names" experiment
On larger hosts we could not really convince teams to use the first name
feature, because there will always be some first names that are
ambiguous.

Adding the initial letter of the second name for disambiguation was not
visually appealing enough. Shortening the full name seems the more
appropriate solution.

"First names" had two primary goals: A dense reviewers column on the
dashboard. And saving vertical space on the change page in the
reviewers section.

We will continue to use first names for the reviewer column only, but
not anywhere else. We may re-evaluate how to render the reviewers
column specifically, but this should not affect the entire application.

On the change page we have tweaked the max-width of account chips such
that two reviewer chips will fit next to each other, even when using
full names. The overall width of the metadata column has grown a few
pixels for that.

Also included in this change:
- Adding attention set related utility methods to account-util.
- Tweaking the length of the account label in other places.
- Making sure that the submit requirements component does not
  increase the width of the metadata column too much as currently
  very often seen on android-review.

Screenshots:

gerrit-review change page:
Before: https://imgur.com/a/wuSWEU7
After: https://imgur.com/a/hl6uWOV

gerrit-review dashboard:
Before: https://imgur.com/a/Wb5DJ9o
After: https://imgur.com/a/SudGTAU

android-review change page:
Before: https://imgur.com/a/h9Y5jqT
After: https://imgur.com/a/m1awjpX

Change-Id: I3189e76f6859bbf2bea370cdd976d5abb4b2d0be
2020-08-19 12:14:41 +02:00

48 lines
1.5 KiB
TypeScript

/**
* @license
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {AccountInfo, ChangeInfo, ServerInfo} from '../types/common';
import {AccountTag} from '../constants/constants';
export function isServiceUser(account?: AccountInfo): boolean {
return !!account?.tags?.includes(AccountTag.SERVICE_USER);
}
export function removeServiceUsers(accounts?: AccountInfo[]): AccountInfo[] {
return accounts?.filter(a => !isServiceUser(a)) || [];
}
export function isAttentionSetEnabled(config: ServerInfo): boolean {
return !!config?.change?.enable_attention_set;
}
export function canHaveAttention(account: AccountInfo): boolean {
return !!account && !isServiceUser(account);
}
export function hasAttention(
config: ServerInfo,
account: AccountInfo,
change: ChangeInfo
): boolean {
return (
isAttentionSetEnabled(config) &&
canHaveAttention(account) &&
!!change?.attention_set?.hasOwnProperty(account._account_id)
);
}