Add direct message button
While we don't have canonical DMs yet, it takes you to the most recently active DM room
This commit is contained in:
parent
3e356756aa
commit
b475bc9e91
1 changed files with 30 additions and 0 deletions
|
@ -186,6 +186,26 @@ const DirectChatsSection = withLegacyMatrixClient(({matrixClient: cli, userId, s
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function openDMForUser(cli, userId) {
|
||||||
|
const dmRooms = DMRoomMap.shared().getDMRoomsForUserId(userId);
|
||||||
|
const lastActiveRoom = dmRooms.reduce((lastActiveRoom, roomId) => {
|
||||||
|
const room = cli.getRoom(roomId);
|
||||||
|
if (!lastActiveRoom || (room && lastActiveRoom.getLastActiveTimestamp() < room.getLastActiveTimestamp())) {
|
||||||
|
return room;
|
||||||
|
}
|
||||||
|
return lastActiveRoom;
|
||||||
|
}, null);
|
||||||
|
|
||||||
|
if (lastActiveRoom) {
|
||||||
|
dis.dispatch({
|
||||||
|
action: 'view_room',
|
||||||
|
room_id: lastActiveRoom.roomId,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
createRoom({dmUserId: userId});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const UserOptionsSection = withLegacyMatrixClient(({matrixClient: cli, member, isIgnored, canInvite}) => {
|
const UserOptionsSection = withLegacyMatrixClient(({matrixClient: cli, member, isIgnored, canInvite}) => {
|
||||||
let ignoreButton = null;
|
let ignoreButton = null;
|
||||||
let insertPillButton = null;
|
let insertPillButton = null;
|
||||||
|
@ -286,10 +306,20 @@ const UserOptionsSection = withLegacyMatrixClient(({matrixClient: cli, member, i
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let directMessageButton;
|
||||||
|
if (!isMe) {
|
||||||
|
directMessageButton = (
|
||||||
|
<AccessibleButton onClick={() => openDMForUser(cli, member.userId)} className="mx_UserInfo_field">
|
||||||
|
{ _t('Direct message') }
|
||||||
|
</AccessibleButton>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mx_UserInfo_container">
|
<div className="mx_UserInfo_container">
|
||||||
<h3>{ _t("User Options") }</h3>
|
<h3>{ _t("User Options") }</h3>
|
||||||
<div className="mx_UserInfo_buttons">
|
<div className="mx_UserInfo_buttons">
|
||||||
|
{ directMessageButton }
|
||||||
{ readReceiptButton }
|
{ readReceiptButton }
|
||||||
{ shareUserButton }
|
{ shareUserButton }
|
||||||
{ insertPillButton }
|
{ insertPillButton }
|
||||||
|
|
Loading…
Reference in a new issue