Support for receiving formatted messages

Co-authored-by: Alvaro Carrasco <alvaro@signal.org>
This commit is contained in:
Scott Nonnenberg 2023-04-10 09:31:45 -07:00 committed by GitHub
parent d34d187f1e
commit d9d820e72a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
72 changed files with 3421 additions and 858 deletions

View file

@ -0,0 +1,61 @@
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import classNames from 'classnames';
import type { KeyboardEventHandler } from 'react';
import React from 'react';
import { Emojify } from './Emojify';
export function AtMention({
direction,
id,
isInvisible,
name,
onClick,
onKeyUp,
}: {
direction: 'incoming' | 'outgoing' | undefined;
id: string;
isInvisible: boolean;
name: string;
onClick: () => void;
onKeyUp: KeyboardEventHandler;
}): JSX.Element {
if (isInvisible) {
return (
<span
className={classNames(
'MessageBody__at-mention',
'MessageBody__at-mention--invisible'
)}
data-id={id}
data-title={name}
>
<bdi>
@
<Emojify isInvisible={isInvisible} text={name} />
</bdi>
</span>
);
}
return (
<span
className={classNames(
'MessageBody__at-mention',
`MessageBody__at-mention--${direction}`
)}
onClick={onClick}
onKeyUp={onKeyUp}
tabIndex={0}
role="link"
data-id={id}
data-title={name}
>
<bdi>
@
<Emojify isInvisible={isInvisible} text={name} />
</bdi>
</span>
);
}