Merge branch 'krille/encryption-json' into 'main'

fix: JSON parsing in decryptRoomEvent method

Closes #242

See merge request famedly/company/frontend/famedlysdk!886
This commit is contained in:
Nicolas Werner 2021-11-10 11:08:58 +00:00
commit 541abfb792
1 changed files with 18 additions and 5 deletions

View File

@ -285,21 +285,34 @@ class Encryption {
if (event.type != EventTypes.Encrypted) { if (event.type != EventTypes.Encrypted) {
return event; return event;
} }
final content = event.parsedRoomEncryptedContent;
final sessionId = content.sessionId;
try { try {
if (client.database != null && if (client.database != null &&
sessionId != null &&
!(keyManager !(keyManager
.getInboundGroupSession(roomId, event.content['session_id'], .getInboundGroupSession(
event.content['sender_key']) roomId,
sessionId,
content.senderKey,
)
?.isValid ?? ?.isValid ??
false)) { false)) {
await keyManager.loadInboundGroupSession( await keyManager.loadInboundGroupSession(
roomId, event.content['session_id'], event.content['sender_key']); roomId,
sessionId,
content.senderKey,
);
} }
event = decryptRoomEventSync(roomId, event); event = decryptRoomEventSync(roomId, event);
if (event.type == EventTypes.Encrypted && if (event.type == EventTypes.Encrypted &&
event.content['can_request_session'] == true) { event.content['can_request_session'] == true &&
sessionId != null) {
keyManager.maybeAutoRequest( keyManager.maybeAutoRequest(
roomId, event.content['session_id'], event.content['sender_key']); roomId,
sessionId,
content.senderKey,
);
} }
if (event.type != EventTypes.Encrypted && store) { if (event.type != EventTypes.Encrypted && store) {
if (updateType != EventUpdateType.history) { if (updateType != EventUpdateType.history) {