Fix room mention (#1459)

* create room mention with alias if possible

* display room mention text as they were sent
This commit is contained in:
Ajay Bura 2023-10-19 17:43:54 +11:00 committed by GitHub
parent ed3d14b131
commit a2692e1469
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 11 deletions

View file

@ -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() ?? ''}

View file

@ -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;

View file

@ -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>
);
}