const [isEditing, setIsEditing] = useState(false);
const mx = initMatrix.matrixClient;
const user = mx.getUser(mx.getUserId());
- const fallbackUsername = userId.match(/^@?(\S+):(\S+)$/)[1];
const displayNameRef = useRef(null);
const [avatarSrc, setAvatarSrc] = useState(user.avatarUrl ? mx.mxcUrlToHttp(user.avatarUrl, 80, 80, 'crop') : null);
const renderInfo = () => (
<div className="profile-editor__info" style={{ marginBottom: avatarSrc ? '24px' : '0' }}>
<div>
- <Text variant="h2" primary weight="medium">{twemojify(username) ?? fallbackUsername}</Text>
+ <Text variant="h2" primary weight="medium">{twemojify(username) ?? userId}</Text>
<IconButton
src={PencilIC}
size="extra-small"
return (
<div className="profile-editor">
<ImageUpload
- text={username ?? fallbackUsername}
+ text={username ?? userId}
bgColor={colorMXID(userId)}
imageSrc={avatarSrc}
onUpload={handleAvatarUpload}
},
startdm: {
name: 'startdm',
- description: 'Start DM with user. Example: /startdm userId1 userId2',
+ description: 'Start direct message with user. Example: /startdm userId1',
exe: async (roomId, data) => {
const mx = initMatrix.matrixClient;
const rawIds = data.split(' ');
},
join: {
name: 'join',
- description: 'Join room with alias. Example: /join alias1 alias2',
+ description: 'Join room with address. Example: /join address1 address2',
exe: (roomId, data) => {
const rawIds = data.split(' ');
const roomIds = rawIds.filter((id) => id.match(ROOM_ID_ALIAS_REG));
},
myroomnick: {
name: 'myroomnick',
- description: 'Change my room nick',
+ description: 'Change nick in current room.',
exe: (roomId, data) => {
const nick = data.trim();
if (nick === '') return;
},
myroomavatar: {
name: 'myroomavatar',
- description: 'Change my room avatar. Example /myroomavatar mxc://xyzabc',
+ description: 'Change profile picture in current room. Example /myroomavatar mxc://xyzabc',
exe: (roomId, data) => {
if (data.match(MXC_REG)) {
roomActions.setMyRoomAvatar(roomId, data);