Use system nickname or first name for incoming group calls

This commit is contained in:
ayumi-signal 2024-02-08 07:28:34 -08:00 committed by GitHub
parent 59b135ad7e
commit 4f97c8270c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 73 additions and 9 deletions

View file

@ -39,11 +39,18 @@ export type PropsType = {
| 'phoneNumber'
| 'profileName'
| 'sharedGroupNames'
| 'systemGivenName'
| 'systemNickname'
| 'title'
| 'type'
| 'unblurredAvatarPath'
>;
groupMembers?: Array<Pick<ConversationType, 'id' | 'firstName' | 'title'>>;
groupMembers?: Array<
Pick<
ConversationType,
'id' | 'firstName' | 'systemGivenName' | 'systemNickname' | 'title'
>
>;
hasLocalAudio: boolean;
hasLocalVideo: boolean;
i18n: LocalizerType;

View file

@ -25,6 +25,8 @@ export type PropsType = {
| 'phoneNumber'
| 'profileName'
| 'sharedGroupNames'
| 'systemGivenName'
| 'systemNickname'
| 'title'
| 'type'
| 'unblurredAvatarPath'
@ -34,10 +36,18 @@ export type PropsType = {
ringMode: RingMode;
// The following should only be set for group conversations.
groupMembers?: Array<Pick<ConversationType, 'id' | 'firstName' | 'title'>>;
groupMembers?: Array<
Pick<
ConversationType,
'id' | 'firstName' | 'systemGivenName' | 'systemNickname' | 'title'
>
>;
isCallFull?: boolean;
peekedParticipants?: Array<
Pick<ConversationType, 'firstName' | 'title' | 'serviceId'>
Pick<
ConversationType,
'firstName' | 'systemGivenName' | 'systemNickname' | 'title' | 'serviceId'
>
>;
};

View file

@ -53,8 +53,16 @@ export type PropsType = {
}
| {
callMode: CallMode.Group;
otherMembersRung: Array<Pick<ConversationType, 'firstName' | 'title'>>;
ringer: Pick<ConversationType, 'firstName' | 'title'>;
otherMembersRung: Array<
Pick<
ConversationType,
'firstName' | 'systemGivenName' | 'systemNickname' | 'title'
>
>;
ringer: Pick<
ConversationType,
'firstName' | 'systemGivenName' | 'systemNickname' | 'title'
>;
}
);
@ -96,8 +104,16 @@ function GroupCallMessage({
ringer,
}: Readonly<{
i18n: LocalizerType;
otherMembersRung: Array<Pick<ConversationType, 'firstName' | 'title'>>;
ringer: Pick<ConversationType, 'firstName' | 'title'>;
otherMembersRung: Array<
Pick<
ConversationType,
'firstName' | 'systemGivenName' | 'systemNickname' | 'title'
>
>;
ringer: Pick<
ConversationType,
'firstName' | 'systemGivenName' | 'systemNickname' | 'title'
>;
}>): JSX.Element {
// As an optimization, we only process the first two names.
const [first, second] = otherMembersRung

View file

@ -20,4 +20,25 @@ describe('getParticipantName', () => {
assert.strictEqual(getParticipantName(participant), 'Foo Bar');
});
it('returns system given name if available', () => {
const participant = {
firstName: 'Foo',
systemGivenName: 'Foo from that party',
title: 'Foo Bar',
};
assert.strictEqual(getParticipantName(participant), 'Foo from that party');
});
it('returns system nickname if available', () => {
const participant = {
firstName: 'Foo',
systemGivenName: 'Foo from that party',
systemNickname: 'Foo-chan',
title: 'Foo Bar',
};
assert.strictEqual(getParticipantName(participant), 'Foo-chan');
});
});

View file

@ -4,7 +4,17 @@
import type { ConversationType } from '../state/ducks/conversations';
export function getParticipantName(
participant: Readonly<Pick<ConversationType, 'firstName' | 'title'>>
participant: Readonly<
Pick<
ConversationType,
'firstName' | 'systemGivenName' | 'systemNickname' | 'title'
>
>
): string {
return participant.firstName || participant.title;
return (
participant.systemNickname ||
participant.systemGivenName ||
participant.firstName ||
participant.title
);
}