diff --git a/src/matrix/DeviceMessageHandler.js b/src/matrix/DeviceMessageHandler.js index 5654f0b5..bee5ae43 100644 --- a/src/matrix/DeviceMessageHandler.js +++ b/src/matrix/DeviceMessageHandler.js @@ -37,6 +37,9 @@ export class DeviceMessageHandler { async writeSync(toDeviceEvents, txn, log) { const encryptedEvents = toDeviceEvents.filter(e => e.type === "m.room.encrypted"); log.set("encryptedCount", encryptedEvents.length); + const keyRequestCount = toDeviceEvents.reduce((sum, e) => sum + e.type === "m.room_key_request" ? 1 : 0, 0); + log.set("keyRequestCount", keyRequestCount); + log.set("otherCount", toDeviceEvents.length - encryptedEvents.length - keyRequestCount); if (!encryptedEvents.length) { return false; } diff --git a/src/matrix/Session.js b/src/matrix/Session.js index cd09c1f4..daa9ecb1 100644 --- a/src/matrix/Session.js +++ b/src/matrix/Session.js @@ -399,7 +399,7 @@ export class Session { } const toDeviceEvents = syncResponse.to_device?.events; - if (Array.isArray(toDeviceEvents)) { + if (Array.isArray(toDeviceEvents) && toDeviceEvents.length) { changes.deviceMessageDecryptionPending = await log.wrap("deviceMsgs", log => this._deviceMessageHandler.writeSync(toDeviceEvents, txn, log)); }