diff --git a/src/client.js b/src/client.js index 1c2c79095..c6026ade2 100644 --- a/src/client.js +++ b/src/client.js @@ -418,8 +418,10 @@ function _setDeviceVerification(client, userId, deviceId, verified, blocked, kno if (!client._crypto) { throw new Error("End-to-End encryption disabled"); } - client._crypto.setDeviceVerification(userId, deviceId, verified, blocked, known); - client.emit("deviceVerificationChanged", userId, deviceId); + const dev = client._crypto.setDeviceVerification( + userId, deviceId, verified, blocked, known, + ); + client.emit("deviceVerificationChanged", userId, deviceId, dev); } /** @@ -3163,6 +3165,7 @@ module.exports.CRYPTO_ENABLED = CRYPTO_ENABLED; * @event module:client~MatrixClient#"deviceVerificationChanged" * @param {string} userId the owner of the verified device * @param {string} deviceId the id of the verified device + * @param {module:crypto/deviceinfo} deviceInfo updated device information */ /** diff --git a/src/crypto/index.js b/src/crypto/index.js index 57edebedf..d4958304a 100644 --- a/src/crypto/index.js +++ b/src/crypto/index.js @@ -386,6 +386,8 @@ Crypto.prototype.listDeviceKeys = function(userId) { * * @param {?boolean} known whether to mark that the user has been made aware of * the existence of this device. Null to leave unchanged + * + * @return {module:crypto/deviceinfo} updated DeviceInfo */ Crypto.prototype.setDeviceVerification = function(userId, deviceId, verified, blocked, known) { @@ -414,12 +416,12 @@ Crypto.prototype.setDeviceVerification = function(userId, deviceId, verified, knownStatus = known; } - if (dev.verified === verificationStatus && dev.known === knownStatus) { - return; + if (dev.verified !== verificationStatus || dev.known !== knownStatus) { + dev.verified = verificationStatus; + dev.known = knownStatus; + this._sessionStore.storeEndToEndDevicesForUser(userId, devices); } - dev.verified = verificationStatus; - dev.known = knownStatus; - this._sessionStore.storeEndToEndDevicesForUser(userId, devices); + return DeviceInfo.fromStorage(dev, deviceId); };