Remove non-existent display_name field from the UserProfileUserInfo interface. (#139091)

This commit is contained in:
Aleh Zasypkin 2022-08-24 13:50:08 +02:00 committed by GitHub
parent 410ededfd5
commit 6817fad7ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 75 additions and 46 deletions

View file

@ -12,4 +12,10 @@ export type { UserProfilesPopoverProps } from './user_profiles_popover';
export { UserAvatar } from './user_avatar';
export { UserProfilesSelectable } from './user_profiles_selectable';
export { UserProfilesPopover } from './user_profiles_popover';
export type { UserProfile, UserProfileUserInfo, UserProfileAvatarData } from './user_profile';
export { getUserDisplayName } from './user_profile';
export type {
UserProfile,
UserProfileUserInfo,
UserProfileAvatarData,
GetUserDisplayNameParams,
} from './user_profile';

View file

@ -58,10 +58,6 @@ export interface UserProfileUserInfo {
* Optional full name of the user.
*/
full_name?: string;
/**
* Optional display name of the user.
*/
display_name?: string;
}
/**
@ -136,10 +132,29 @@ export function getUserAvatarInitials(
}
/**
* Determines the display name for the provided user profile.
*
* @param {UserProfileUserInfo} user User info
* Set of available name-related fields to pick as display name.
*/
export function getUserDisplayName(user: Pick<UserProfileUserInfo, 'username' | 'full_name'>) {
return user.full_name || user.username;
export interface GetUserDisplayNameParams {
/**
* Username of the user.
*/
username: string;
/**
* Optional email of the user.
*/
email?: string;
/**
* Optional full name of the user.
*/
full_name?: string;
}
/**
* Determines the display name for the provided user information.
* @param params Set of available user's name-related fields.
*/
export function getUserDisplayName(params: GetUserDisplayNameParams) {
return params.full_name || params.email || params.username;
}

View file

@ -27,4 +27,6 @@ export type {
UserProfileUserInfoWithSecurity,
ApiKey,
UserRealm,
GetUserDisplayNameParams,
} from './model';
export { getUserDisplayName } from './model';

View file

@ -6,7 +6,7 @@
*/
export type { ApiKey, ApiKeyToInvalidate, ApiKeyRoleDescriptors } from './api_key';
export type { User, EditUser } from './user';
export type { User, EditUser, GetUserDisplayNameParams } from './user';
export type {
GetUserProfileResponse,
UserProfile,

View file

@ -13,12 +13,22 @@ describe('#getUserDisplayName', () => {
expect(
getUserDisplayName({
full_name: 'my full name',
email: 'foo@elastic.co',
username: 'foo',
} as User)
).toEqual('my full name');
});
it(`uses the username when full name is not available`, () => {
it(`uses the email when full name is not available available`, () => {
expect(
getUserDisplayName({
email: 'foo@elastic.co',
username: 'foo',
} as User)
).toEqual('foo@elastic.co');
});
it(`uses the username when full name and email are not available`, () => {
expect(
getUserDisplayName({
username: 'foo',

View file

@ -26,6 +26,30 @@ export interface EditUser extends User {
confirmPassword?: string;
}
export function getUserDisplayName(user: Pick<User, 'username' | 'full_name'>) {
return user.full_name || user.username;
/**
* Set of available name-related fields to pick as display name.
*/
export interface GetUserDisplayNameParams {
/**
* Username of the user.
*/
username: string;
/**
* Optional email of the user.
*/
email?: string;
/**
* Optional full name of the user.
*/
full_name?: string;
}
/**
* Determines the display name for the provided user information.
* @param params Set of available user's name-related fields.
*/
export function getUserDisplayName(params: GetUserDisplayNameParams) {
return params.full_name || params.email || params.username;
}

View file

@ -60,10 +60,6 @@ export interface UserProfileUserInfo {
* Optional full name of the user.
*/
full_name?: string;
/**
* Optional display name of the user.
*/
display_name?: string;
}
/**

View file

@ -76,8 +76,9 @@ export const EditUserPage: FunctionComponent<EditUserPageProps> = ({ username })
const isReservedUser = isUserReserved(user);
const isDeprecatedUser = isUserDeprecated(user);
const displayName = getUserDisplayName(user);
// We render email below the title already and don't need to duplicate it in the title itself.
const title = getUserDisplayName({ full_name: user.full_name, username: user.username });
return (
<>
<EuiPageHeader
@ -85,11 +86,11 @@ export const EditUserPage: FunctionComponent<EditUserPageProps> = ({ username })
pageTitle={
<EuiFlexGroup alignItems="center" responsive={false}>
<EuiFlexItem grow={false}>
<EuiAvatar name={displayName!} size="xl" />
<EuiAvatar name={getUserDisplayName(user)} size="xl" />
</EuiFlexItem>
<EuiFlexItem>
<EuiTitle>
<h1>{displayName}</h1>
<h1>{title}</h1>
</EuiTitle>
<EuiText>{user.email}</EuiText>
</EuiFlexItem>

View file

@ -72,7 +72,6 @@ describe('UserProfileService', () => {
uid: 'UID',
user: {
username: 'user-1',
display_name: 'display-name-1',
full_name: 'full-name-1',
realm_name: 'some-realm',
realm_domain: 'some-domain',
@ -201,7 +200,6 @@ describe('UserProfileService', () => {
"labels": Object {},
"uid": "UID",
"user": Object {
"display_name": "display-name-1",
"email": undefined,
"full_name": "full-name-1",
"realm_domain": "some-domain",
@ -252,7 +250,6 @@ describe('UserProfileService', () => {
"labels": Object {},
"uid": "UID",
"user": Object {
"display_name": "display-name-1",
"email": undefined,
"full_name": "full-name-1",
"realm_domain": "some-domain",
@ -334,7 +331,6 @@ describe('UserProfileService', () => {
"labels": Object {},
"uid": "some-profile-uid",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"realm_domain": "some-realm-domain",
@ -366,7 +362,6 @@ describe('UserProfileService', () => {
"labels": Object {},
"uid": "some-profile-uid",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"realm_domain": "some-realm-domain",
@ -431,7 +426,6 @@ describe('UserProfileService', () => {
"labels": Object {},
"uid": "some-profile-uid",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"realm_domain": "some-realm-domain",
@ -491,7 +485,6 @@ describe('UserProfileService', () => {
uid: 'UID-1',
user: {
username: 'user-1',
display_name: 'display-name-1',
full_name: 'full-name-1',
realm_name: 'some-realm',
realm_domain: 'some-domain',
@ -502,7 +495,6 @@ describe('UserProfileService', () => {
uid: 'UID-2',
user: {
username: 'user-2',
display_name: 'display-name-2',
full_name: 'full-name-2',
realm_name: 'some-realm',
realm_domain: 'some-domain',
@ -521,7 +513,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-1",
"user": Object {
"display_name": "display-name-1",
"email": undefined,
"full_name": "full-name-1",
"username": "user-1",
@ -532,7 +523,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-2",
"user": Object {
"display_name": "display-name-2",
"email": undefined,
"full_name": "full-name-2",
"username": "user-2",
@ -571,7 +561,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-1",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -621,7 +610,6 @@ describe('UserProfileService', () => {
uid: 'UID-1',
user: {
username: 'user-1',
display_name: 'display-name-1',
full_name: 'full-name-1',
realm_name: 'some-realm',
realm_domain: 'some-domain',
@ -632,7 +620,6 @@ describe('UserProfileService', () => {
uid: 'UID-2',
user: {
username: 'user-2',
display_name: 'display-name-2',
full_name: 'full-name-2',
realm_name: 'some-realm',
realm_domain: 'some-domain',
@ -651,7 +638,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-1",
"user": Object {
"display_name": "display-name-1",
"email": undefined,
"full_name": "full-name-1",
"username": "user-1",
@ -662,7 +648,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-2",
"user": Object {
"display_name": "display-name-2",
"email": undefined,
"full_name": "full-name-2",
"username": "user-2",
@ -703,7 +688,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-1",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -797,7 +781,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-0",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -810,7 +793,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-1",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -823,7 +805,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-8",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -903,7 +884,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-0",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -916,7 +896,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-20",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -1006,7 +985,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-0",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",
@ -1019,7 +997,6 @@ describe('UserProfileService', () => {
"enabled": true,
"uid": "UID-1",
"user": Object {
"display_name": undefined,
"email": "some@email",
"full_name": undefined,
"username": "some-username",

View file

@ -190,8 +190,6 @@ function parseUserProfile<D extends UserProfileData>(
email: rawUserProfile.user.email ?? undefined,
// @elastic/elasticsearch types support `null` values for the `full_name`, but we don't.
full_name: rawUserProfile.user.full_name ?? undefined,
// @ts-expect-error @elastic/elasticsearch SecurityUserProfileUser.display_name?: string
display_name: rawUserProfile.user.display_name ?? undefined,
},
};
}