1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2026-01-03 23:22:30 +03:00

Wrap the crypto event handlers in try/catch blocks

This commit is contained in:
Mark Haines
2016-09-12 11:44:31 +01:00
parent fdb640e361
commit f0274f3f26

View File

@@ -89,32 +89,47 @@ function Crypto(baseApis, eventEmitter, sessionStore, userId, deviceId) {
function _registerEventHandlers(crypto, eventEmitter) {
eventEmitter.on("sync", function(syncState, oldState, data) {
if (syncState == "PREPARED") {
// XXX ugh. we're assuming the eventEmitter is a MatrixClient.
// how can we avoid doing so?
var rooms = eventEmitter.getRooms();
crypto._onInitialSyncCompleted(rooms);
try {
if (syncState == "PREPARED") {
// XXX ugh. we're assuming the eventEmitter is a MatrixClient.
// how can we avoid doing so?
var rooms = eventEmitter.getRooms();
crypto._onInitialSyncCompleted(rooms);
}
} catch (e) {
console.error("Error handling sync", e);
}
});
eventEmitter.on(
"RoomMember.membership",
crypto._onRoomMembership.bind(crypto)
);
eventEmitter.on("RoomMember.membership", function(event, member, oldMembership) {
try {
crypto._onRoomMembership(event, member, oldMembership);
} catch (e) {
console.error("Error handling membership change:", e);
}
});
eventEmitter.on("toDeviceEvent", function(event) {
if (event.getType() == "m.room_key") {
crypto._onRoomKeyEvent(event);
} else if (event.getType() == "m.new_device") {
crypto._onNewDeviceEvent(event);
try {
if (event.getType() == "m.room_key") {
crypto._onRoomKeyEvent(event);
} else if (event.getType() == "m.new_device") {
crypto._onNewDeviceEvent(event);
}
} catch (e) {
console.error("Error handling toDeviceEvent:", e);
}
});
eventEmitter.on("event", function(event) {
if (!event.isState() || event.getType() != "m.room.encryption") {
return;
try {
if (!event.isState() || event.getType() != "m.room.encryption") {
return;
}
crypto._onCryptoEvent(event);
} catch (e) {
console.error("Error handling crypto event:", e);
}
crypto._onCryptoEvent(event);
});
}