signal-desktop/ts/components/ContactPill.tsx

83 lines
1.8 KiB
TypeScript
Raw Normal View History

2021-03-03 14:09:58 -06:00
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import React from 'react';
2021-03-03 14:09:58 -06:00
import type { ConversationType } from '../state/ducks/conversations';
import type { LocalizerType } from '../types/Util';
2021-03-03 14:09:58 -06:00
import { ContactName } from './conversation/ContactName';
import { Avatar, AvatarSize } from './Avatar';
export type PropsType = {
i18n: LocalizerType;
onClickRemove: (id: string) => void;
} & Pick<
ConversationType,
| 'about'
| 'acceptedMessageRequest'
2024-07-11 12:44:09 -07:00
| 'avatarUrl'
| 'color'
| 'firstName'
| 'id'
| 'isMe'
| 'phoneNumber'
| 'profileName'
| 'sharedGroupNames'
| 'title'
2024-07-11 12:44:09 -07:00
| 'unblurredAvatarUrl'
>;
2021-03-03 14:09:58 -06:00
2022-11-17 16:45:19 -08:00
export function ContactPill({
acceptedMessageRequest,
2024-07-11 12:44:09 -07:00
avatarUrl,
2021-03-03 14:09:58 -06:00
color,
firstName,
i18n,
2021-05-07 17:21:10 -05:00
isMe,
2021-03-03 14:09:58 -06:00
id,
phoneNumber,
profileName,
sharedGroupNames,
2021-03-03 14:09:58 -06:00
title,
2024-07-11 12:44:09 -07:00
unblurredAvatarUrl,
2021-03-03 14:09:58 -06:00
onClickRemove,
2022-11-17 16:45:19 -08:00
}: PropsType): JSX.Element {
2023-03-29 17:03:25 -07:00
const removeLabel = i18n('icu:ContactPill--remove');
2021-03-03 14:09:58 -06:00
return (
<div className="module-ContactPill">
<Avatar
acceptedMessageRequest={acceptedMessageRequest}
2024-07-11 12:44:09 -07:00
avatarUrl={avatarUrl}
badge={undefined}
2021-03-03 14:09:58 -06:00
color={color}
noteToSelf={false}
conversationType="direct"
i18n={i18n}
2021-05-07 17:21:10 -05:00
isMe={isMe}
2021-03-03 14:09:58 -06:00
phoneNumber={phoneNumber}
profileName={profileName}
title={title}
sharedGroupNames={sharedGroupNames}
2023-05-04 11:04:22 -07:00
size={AvatarSize.TWENTY}
2024-07-11 12:44:09 -07:00
unblurredAvatarUrl={unblurredAvatarUrl}
2021-03-03 14:09:58 -06:00
/>
<ContactName
firstName={firstName}
module="module-ContactPill__contact-name"
preferFirstName
title={title}
/>
<button
aria-label={removeLabel}
className="module-ContactPill__remove"
onClick={() => {
onClickRemove(id);
}}
title={removeLabel}
type="button"
/>
</div>
);
2022-11-17 16:45:19 -08:00
}