diff --git a/src/components/views/right_panel/UserInfo.js b/src/components/views/right_panel/UserInfo.js index 315035db96..1174f45640 100644 --- a/src/components/views/right_panel/UserInfo.js +++ b/src/components/views/right_panel/UserInfo.js @@ -25,7 +25,7 @@ import dis from '../../../dispatcher'; import Modal from '../../../Modal'; import * as sdk from '../../../index'; import { _t } from '../../../languageHandler'; -import createRoom from '../../../createRoom'; +import createRoom, {findDMForUser} from '../../../createRoom'; import DMRoomMap from '../../../utils/DMRoomMap'; import AccessibleButton from '../elements/AccessibleButton'; import SdkConfig from '../../../SdkConfig'; @@ -169,10 +169,19 @@ async function verifyDevice(userId, device) { } function verifyUser(user) { + const cli = MatrixClientPeg.get(); + const dmRoom = findDMForUser(cli, user.userId); + let existingRequest; + if (dmRoom) { + existingRequest = cli.findVerificationRequestDMInProgress(dmRoom.roomId); + } dis.dispatch({ action: "set_right_panel_phase", phase: RIGHT_PANEL_PHASES.EncryptionPanel, - refireParams: {member: user}, + refireParams: { + member: user, + verificationRequest: existingRequest, + }, }); } diff --git a/src/createRoom.js b/src/createRoom.js index c25b618dc6..d4575633b3 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -159,7 +159,7 @@ export default function createRoom(opts) { }); } -export async function ensureDMExists(client, userId) { +export function findDMForUser(client, userId) { const roomIds = DMRoomMap.shared().getDMRoomsForUserId(userId); const rooms = roomIds.map(id => client.getRoom(id)); const suitableDMRooms = rooms.filter(r => { @@ -169,10 +169,16 @@ export async function ensureDMExists(client, userId) { } return false; }); - let roomId; if (suitableDMRooms.length) { - const room = suitableDMRooms[0]; - roomId = room.roomId; + return suitableDMRooms[0]; + } +} + +export async function ensureDMExists(client, userId) { + const existingDMRoom = findDMForUser(client, userId); + let roomId; + if (existingDMRoom) { + roomId = existingDMRoom.roomId; } else { roomId = await createRoom({dmUserId: userId, spinner: false, andView: false}); }