You've already forked matrix-js-sdk
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:
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user