From bf5f617dd1a21cdf8f1ee0403450fbe64f808ade Mon Sep 17 00:00:00 2001 From: Will Hunt <will@half-shot.uk> Date: Sun, 19 May 2019 21:27:16 +0100 Subject: [PATCH] Don't handle member states we don't care about --- src/matrixeventprocessor.ts | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/matrixeventprocessor.ts b/src/matrixeventprocessor.ts index 3e39518..5751c8d 100644 --- a/src/matrixeventprocessor.ts +++ b/src/matrixeventprocessor.ts @@ -196,31 +196,28 @@ export class MatrixEventProcessor { let msg = `\`${event.sender}\` `; + const isNew = event.unsigned === undefined || event.unsigned.prev_content === undefined; + const allowJoinLeave = !this.config.bridge.disableJoinLeaveNotifications; + if (event.type === "m.room.name") { msg += `set the name to \`${event.content!.name}\``; } else if (event.type === "m.room.topic") { msg += `set the topic to \`${event.content!.topic}\``; } else if (event.type === "m.room.member") { const membership = event.content!.membership; - if (membership === "join" - && event.unsigned.prev_content === undefined) { - if (!this.config.bridge.disableJoinLeaveNotifications) { - msg += `joined the room`; - } else { - return; - } + if (membership === "join" && isNew && allowJoinLeave) { + msg += "joined the room"; } else if (membership === "invite") { msg += `invited \`${event.state_key}\` to the room`; } else if (membership === "leave" && event.state_key !== event.sender) { msg += `kicked \`${event.state_key}\` from the room`; - } else if (membership === "leave") { - if (!this.config.bridge.disableJoinLeaveNotifications) { - msg += `left the room`; - } else { - return; - } + } else if (membership === "leave" && allowJoinLeave) { + msg += "left the room"; } else if (membership === "ban") { msg += `banned \`${event.state_key}\` from the room`; + } else { + // Ignore anything else + return; } } -- GitLab