Fix room mention (#1459)
* create room mention with alias if possible * display room mention text as they were sent
This commit is contained in:
parent
ed3d14b131
commit
a2692e1469
3 changed files with 10 additions and 11 deletions
|
@ -32,14 +32,14 @@ function UnknownRoomMentionItem({
|
|||
const mx = useMatrixClient();
|
||||
const roomAlias: string = roomAliasFromQueryText(mx, query.text);
|
||||
|
||||
const handleSelect = () => handleAutocomplete(roomAlias, roomAlias);
|
||||
|
||||
return (
|
||||
<MenuItem
|
||||
as="button"
|
||||
radii="300"
|
||||
onKeyDown={(evt: ReactKeyboardEvent<HTMLButtonElement>) =>
|
||||
onTabPress(evt, () => handleAutocomplete(roomAlias, roomAlias))
|
||||
}
|
||||
onClick={() => handleAutocomplete(roomAlias, roomAlias)}
|
||||
onKeyDown={(evt: ReactKeyboardEvent<HTMLButtonElement>) => onTabPress(evt, handleSelect)}
|
||||
onClick={handleSelect}
|
||||
before={
|
||||
<Avatar size="200">
|
||||
<Icon src={Icons.Hash} size="100" />
|
||||
|
@ -140,15 +140,17 @@ export function RoomMentionAutocomplete({
|
|||
const avatarUrl = getRoomAvatarUrl(mx, room);
|
||||
const iconSrc = !dm && joinRuleToIconSrc(Icons, room.getJoinRule(), room.isSpaceRoom());
|
||||
|
||||
const handleSelect = () => handleAutocomplete(room.getCanonicalAlias() ?? rId, room.name);
|
||||
|
||||
return (
|
||||
<MenuItem
|
||||
key={rId}
|
||||
as="button"
|
||||
radii="300"
|
||||
onKeyDown={(evt: ReactKeyboardEvent<HTMLButtonElement>) =>
|
||||
onTabPress(evt, () => handleAutocomplete(rId, room.name))
|
||||
onTabPress(evt, handleSelect)
|
||||
}
|
||||
onClick={() => handleAutocomplete(room.getCanonicalAlias() ?? rId, room.name)}
|
||||
onClick={handleSelect}
|
||||
after={
|
||||
<Text size="T200" priority="300" truncate>
|
||||
{room.getCanonicalAlias() ?? ''}
|
||||
|
|
|
@ -74,7 +74,7 @@ const elementToInlineNode = (node: Element): MentionElement | EmoticonElement |
|
|||
if (typeof href !== 'string') return undefined;
|
||||
const [mxId] = parseMatrixToUrl(href);
|
||||
if (mxId) {
|
||||
return createMentionElement(mxId, mxId, false);
|
||||
return createMentionElement(mxId, parseNodeText(node) || mxId, false);
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
|
|
|
@ -180,10 +180,7 @@ export const getReactCustomHtmlParser = (
|
|||
mentionPrefix === '#'
|
||||
? getRoomWithCanonicalAlias(mx, mentionId)
|
||||
: mx.getRoom(mentionId);
|
||||
const mentionName = mentionRoom?.name;
|
||||
|
||||
const mentionDisplayName =
|
||||
mentionName && (mentionName.startsWith('#') ? mentionName : `#${mentionName}`);
|
||||
return (
|
||||
<span
|
||||
{...props}
|
||||
|
@ -198,7 +195,7 @@ export const getReactCustomHtmlParser = (
|
|||
onClick={params.handleMentionClick}
|
||||
style={{ cursor: 'pointer' }}
|
||||
>
|
||||
{mentionDisplayName ?? mentionId}
|
||||
{domToReact(children, opts)}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue