Skip to content

Commit a5ed4e5

Browse files
committed
fix(matrix): respect is_direct: false in isStrictDirectRoom
isStrictDirectRoom returned evidence.strict directly without considering memberStateFlag. When a 2-person room has is_direct: false on the membership event, the function still classified it as a strict DM, causing requireMention to be silently bypassed for rooms configured under groups[]. Now checks memberStateFlag === false before returning true, ensuring explicit is_direct: false signals override the 2-member heuristic. Closes #85017
1 parent 577e64d commit a5ed4e5

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

extensions/matrix/src/matrix/direct-room.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,13 @@ export async function isStrictDirectRoom(params: {
117117
remoteUserId: string;
118118
selfUserId?: string | null;
119119
}): Promise<boolean> {
120-
return (
121-
await inspectMatrixDirectRoomEvidence({
122-
client: params.client,
123-
roomId: params.roomId,
124-
remoteUserId: params.remoteUserId,
125-
selfUserId: params.selfUserId,
126-
})
127-
).strict;
120+
const evidence = await inspectMatrixDirectRoomEvidence({
121+
client: params.client,
122+
roomId: params.roomId,
123+
remoteUserId: params.remoteUserId,
124+
selfUserId: params.selfUserId,
125+
});
126+
if (!evidence.strict) return false;
127+
if (evidence.memberStateFlag === false) return false;
128+
return true;
128129
}

0 commit comments

Comments
 (0)