Fix unencrypted call events

This commit is contained in:
Christian Pauly 2020-08-15 16:05:11 +02:00
parent 215563ab92
commit 50d97ebeb2
2 changed files with 56 additions and 28 deletions

View file

@ -981,14 +981,17 @@ class Client extends MatrixApi {
}
onEvent.add(update);
if (event['type'] == EventTypes.CallInvite) {
onCallInvite.add(Event.fromJson(event, room, sortOrder));
} else if (event['type'] == EventTypes.CallHangup) {
onCallHangup.add(Event.fromJson(event, room, sortOrder));
} else if (event['type'] == EventTypes.CallAnswer) {
onCallAnswer.add(Event.fromJson(event, room, sortOrder));
} else if (event['type'] == EventTypes.CallCandidates) {
onCallCandidates.add(Event.fromJson(event, room, sortOrder));
final rawUnencryptedEvent = update.content;
if (rawUnencryptedEvent['type'] == EventTypes.CallInvite) {
onCallInvite.add(Event.fromJson(rawUnencryptedEvent, room, sortOrder));
} else if (rawUnencryptedEvent['type'] == EventTypes.CallHangup) {
onCallHangup.add(Event.fromJson(rawUnencryptedEvent, room, sortOrder));
} else if (rawUnencryptedEvent['type'] == EventTypes.CallAnswer) {
onCallAnswer.add(Event.fromJson(rawUnencryptedEvent, room, sortOrder));
} else if (rawUnencryptedEvent['type'] == EventTypes.CallCandidates) {
onCallCandidates
.add(Event.fromJson(rawUnencryptedEvent, room, sortOrder));
}
}
}

View file

@ -1349,16 +1349,22 @@ class Room {
{String type = 'offer', int version = 0, String txid}) async {
txid ??= 'txid${DateTime.now().millisecondsSinceEpoch}';
return await client.sendMessage(
id,
EventTypes.CallInvite,
txid,
{
final content = {
'call_id': callId,
'lifetime': lifetime,
'offer': {'sdp': sdp, 'type': type},
'version': version,
},
};
final sendMessageContent = encrypted && client.encryptionEnabled
? await client.encryption.encryptGroupMessagePayload(id, content,
type: EventTypes.CallInvite)
: content;
return await client.sendMessage(
id,
EventTypes.CallInvite,
txid,
sendMessageContent,
);
}
@ -1387,15 +1393,21 @@ class Room {
String txid,
}) async {
txid ??= 'txid${DateTime.now().millisecondsSinceEpoch}';
final content = {
'call_id': callId,
'candidates': candidates,
'version': version,
};
final sendMessageContent = encrypted && client.encryptionEnabled
? await client.encryption.encryptGroupMessagePayload(id, content,
type: EventTypes.CallCandidates)
: content;
return await client.sendMessage(
id,
EventTypes.CallCandidates,
txid,
{
'call_id': callId,
'candidates': candidates,
'version': version,
},
sendMessageContent,
);
}
@ -1407,15 +1419,21 @@ class Room {
Future<String> answerCall(String callId, String sdp,
{String type = 'answer', int version = 0, String txid}) async {
txid ??= 'txid${DateTime.now().millisecondsSinceEpoch}';
final content = {
'call_id': callId,
'answer': {'sdp': sdp, 'type': type},
'version': version,
};
final sendMessageContent = encrypted && client.encryptionEnabled
? await client.encryption.encryptGroupMessagePayload(id, content,
type: EventTypes.CallAnswer)
: content;
return await client.sendMessage(
id,
EventTypes.CallAnswer,
txid,
{
'call_id': callId,
'answer': {'sdp': sdp, 'type': type},
'version': version,
},
sendMessageContent,
);
}
@ -1425,14 +1443,21 @@ class Room {
Future<String> hangupCall(String callId,
{int version = 0, String txid}) async {
txid ??= 'txid${DateTime.now().millisecondsSinceEpoch}';
final content = {
'call_id': callId,
'version': version,
};
final sendMessageContent = encrypted && client.encryptionEnabled
? await client.encryption.encryptGroupMessagePayload(id, content,
type: EventTypes.CallHangup)
: content;
return await client.sendMessage(
id,
EventTypes.CallHangup,
txid,
{
'call_id': callId,
'version': version,
},
sendMessageContent,
);
}