fix: JSON parsing in decryptRoomEvent method

This makes the use of the
event content null safe and
type safe which fixes a
regression when sessionId is
null.
This commit is contained in:
Krille Fear 2021-11-10 09:19:40 +01:00
parent 872b3bff94
commit 048b7faba0
1 changed files with 18 additions and 5 deletions

View File

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