Try to resolve emails before creating a DM (#10164)

This commit is contained in:
Michael Weimann 2023-02-16 14:17:43 +01:00 committed by GitHub
parent f0359a5c18
commit 8feed1a225
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 319 additions and 7 deletions

View file

@ -28,9 +28,19 @@ import { findDMRoom } from "./dm/findDMRoom";
import { privateShouldBeEncrypted } from "./rooms";
import { createDmLocalRoom } from "./dm/createDmLocalRoom";
import { startDm } from "./dm/startDm";
import { resolveThreePids } from "./threepids";
export async function startDmOnFirstMessage(client: MatrixClient, targets: Member[]): Promise<Room> {
const existingRoom = findDMRoom(client, targets);
let resolvedTargets = targets;
try {
resolvedTargets = await resolveThreePids(targets, client);
} catch (e) {
logger.warn("Error resolving 3rd-party members", e);
}
const existingRoom = findDMRoom(client, resolvedTargets);
if (existingRoom) {
dis.dispatch<ViewRoomPayload>({
action: Action.ViewRoom,
@ -42,12 +52,12 @@ export async function startDmOnFirstMessage(client: MatrixClient, targets: Membe
return existingRoom;
}
const room = await createDmLocalRoom(client, targets);
const room = await createDmLocalRoom(client, resolvedTargets);
dis.dispatch({
action: Action.ViewRoom,
room_id: room.roomId,
joining: false,
targets,
targets: resolvedTargets,
});
return room;
}