Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/meteor/app/lib/server/functions/createRoom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ export const createRoom = async <T extends RoomType>(
> => {
const { teamId, ...optionalExtraData } = roomExtraData || ({} as IRoom);

// TODO: use a shared helper to check whether a user is federated
const hasFederatedMembers = members.some((member) => {
if (typeof member === 'string') {
return member.includes(':') && member.includes('@');
Expand Down
8 changes: 6 additions & 2 deletions apps/meteor/server/methods/createDirectMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,11 @@ export async function createDirectMessage(
const users = await Promise.all(usernames.filter((username) => username !== me.username));
const options: Exclude<ICreateRoomParams['options'], undefined> = { creator: me._id };
const roomUsers = excludeSelf ? users : [me, ...users];
const federated = false;

// TODO: use a shared helper to check whether a user is federated
// since the DM creation API doesn't tell us if the room is federated (unlike normal channels),
// we're currently inferring it: if any participant has a Matrix-style ID (@user:server), we treat the DM as federated
const hasFederatedMembers = roomUsers.some((user) => typeof user === 'string' && user.includes(':') && user.includes('@'));

// allow self-DMs
if (roomUsers.length === 1 && roomUsers[0] !== undefined && typeof roomUsers[0] !== 'string' && roomUsers[0]._id !== me._id) {
Expand Down Expand Up @@ -91,7 +95,7 @@ export async function createDirectMessage(
false,
undefined,
{
federated,
...(hasFederatedMembers && { federated: true }),
},
options,
);
Expand Down
Loading