return followingMembers.length !== 0 && (
<TimelineChange
variant="follow"
- content={getUsersActionJsx(followingMembers, 'following the conversation.')}
+ content={getUsersActionJsx(roomId, followingMembers, 'following the conversation.')}
time=""
onClick={() => openReadReceipts(roomId, lastMEvent.getId())}
/>
function getTypingMessage(members) {
const userIds = members;
userIds.delete(mx.getUserId());
- return getUsersActionJsx([...userIds], 'typing...');
+ return getUsersActionJsx(roomId, [...userIds], 'typing...');
}
function updateTyping(members) {
& .btn-cmd-esc {
display: none;
margin: 0 var(--sp-extra-tight);
- padding: var(--sp-ultra-tight) var(--sp-tight);
+ padding: var(--sp-ultra-tight) var(--sp-extra-tight);
border-radius: calc(var(--bo-radius) / 2);
box-shadow: var(--bs-surface-border);
cursor: pointer;
import React from 'react';
-import { getUsername } from '../../../util/matrixUtil';
+import initMatrix from '../../../client/initMatrix';
+import { getUsername, getUsernameOfRoomMember } from '../../../util/matrixUtil';
function getTimelineJSXMessages() {
return {
};
}
-function getUsersActionJsx(userIds, actionStr) {
- const getUserJSX = (username) => <b>{getUsername(username)}</b>;
+function getUsersActionJsx(roomId, userIds, actionStr) {
+ const room = initMatrix.matrixClient.getRoom(roomId);
+ const getUserDisplayName = (userId) => {
+ if (room?.getMember(userId)) return getUsernameOfRoomMember(room.getMember(userId));
+ return getUsername(userId);
+ };
+ const getUserJSX = (userId) => <b>{getUserDisplayName(userId)}</b>;
if (!Array.isArray(userIds)) return 'Idle';
if (userIds.length === 0) return 'Idle';
const MAX_VISIBLE_COUNT = 3;
import initMatrix from '../../../client/initMatrix';
import cons from '../../../client/state/cons';
import navigation from '../../../client/state/navigation';
-import { getUsername } from '../../../util/matrixUtil';
+import { getUsername, getUsernameOfRoomMember } from '../../../util/matrixUtil';
import colorMXID from '../../../util/colorMXID';
import IconButton from '../../atoms/button/IconButton';
function renderPeople(receipt) {
const room = initMatrix.matrixClient.getRoom(roomId);
const member = room.getMember(receipt.userId);
+ const getUserDisplayName = (userId) => {
+ if (room?.getMember(userId)) return getUsernameOfRoomMember(room.getMember(userId));
+ return getUsername(userId);
+ };
return (
<PeopleSelector
key={receipt.userId}
onClick={() => alert('Viewing profile is yet to be implemented')}
avatarSrc={member?.getAvatarUrl(initMatrix.matrixClient.baseUrl, 24, 24, 'crop')}
- name={getUsername(receipt.userId)}
+ name={getUserDisplayName(receipt.userId)}
color={colorMXID(receipt.userId)}
/>
);