Skip to content

Commit 4964998

Browse files
committed
refactor: extract listening for key verification requests
1 parent 028e817 commit 4964998

File tree

3 files changed

+44
-32
lines changed

3 files changed

+44
-32
lines changed

integration_test/matrix_service_test.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ void main() {
107107
);
108108

109109
await aliceDevice.login();
110-
await aliceDevice.listen();
110+
await aliceDevice.startKeyVerificationListener();
111111
debugPrint('AliceDevice - deviceId: ${aliceDevice.client.deviceID}');
112112

113113
final roomId = await aliceDevice.createRoom();
@@ -126,7 +126,7 @@ void main() {
126126
);
127127

128128
await bobDevice.login();
129-
await bobDevice.listen();
129+
await bobDevice.startKeyVerificationListener();
130130
debugPrint('BobDevice - deviceId: ${bobDevice.client.deviceID}');
131131

132132
final joinRes2 = await bobDevice.joinRoom(roomId);

lib/sync/matrix/key_verification_runner.dart

+32
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import 'dart:async';
22

33
import 'package:flutter/foundation.dart';
4+
import 'package:lotti/database/logging_db.dart';
5+
import 'package:lotti/get_it.dart';
6+
import 'package:lotti/sync/matrix/matrix_service.dart';
47
import 'package:matrix/encryption/utils/key_verification.dart';
58
import 'package:matrix/matrix.dart';
69

@@ -73,3 +76,32 @@ class KeyVerificationRunner {
7376
stopTimer();
7477
}
7578
}
79+
80+
Future<void> listenForKeyVerificationRequests({
81+
required MatrixService service,
82+
}) async {
83+
final loggingDb = getIt<LoggingDb>();
84+
85+
try {
86+
service.client.onKeyVerificationRequest.stream.listen((
87+
KeyVerification keyVerification,
88+
) {
89+
service.incomingKeyVerificationRunner = KeyVerificationRunner(
90+
keyVerification,
91+
controller: service.incomingKeyVerificationRunnerController,
92+
name: 'Incoming KeyVerificationRunner',
93+
);
94+
95+
debugPrint('Key Verification Request from ${keyVerification.deviceId}');
96+
service.incomingKeyVerificationController.add(keyVerification);
97+
});
98+
} catch (e, stackTrace) {
99+
debugPrint('$e');
100+
loggingDb.captureException(
101+
e,
102+
domain: 'MATRIX_SERVICE',
103+
subDomain: 'listen',
104+
stackTrace: stackTrace,
105+
);
106+
}
107+
}

lib/sync/matrix/matrix_service.dart

+10-30
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ class MatrixService {
2929
}) : _keyVerificationController =
3030
StreamController<KeyVerificationRunner>.broadcast() {
3131
_client = createMatrixClient(hiveDbName: hiveDbName);
32-
_incomingKeyVerificationRunnerController =
32+
incomingKeyVerificationRunnerController =
3333
StreamController<KeyVerificationRunner>.broadcast(
3434
onListen: publishIncomingRunnerState,
3535
);
3636

3737
keyVerificationStream = _keyVerificationController.stream;
3838
incomingKeyVerificationRunnerStream =
39-
_incomingKeyVerificationRunnerController.stream;
39+
incomingKeyVerificationRunnerController.stream;
4040
}
4141

4242
void publishIncomingRunnerState() {
@@ -60,11 +60,11 @@ class MatrixService {
6060
KeyVerificationRunner? incomingKeyVerificationRunner;
6161
final StreamController<KeyVerificationRunner> _keyVerificationController;
6262
late final StreamController<KeyVerificationRunner>
63-
_incomingKeyVerificationRunnerController;
63+
incomingKeyVerificationRunnerController;
6464
late final Stream<KeyVerificationRunner> keyVerificationStream;
6565
late final Stream<KeyVerificationRunner> incomingKeyVerificationRunnerStream;
6666

67-
final _incomingKeyVerificationController =
67+
final incomingKeyVerificationController =
6868
StreamController<KeyVerification>.broadcast();
6969

7070
Future<void> loginAndListen() async {
@@ -173,11 +173,6 @@ class MatrixService {
173173
return roomId;
174174
}
175175

176-
Room? getRoom(String roomId) {
177-
final room = _client.getRoomById(roomId);
178-
return room;
179-
}
180-
181176
List<DeviceKeys> getUnverified() {
182177
final unverified = _client.unverifiedDevices;
183178
return unverified;
@@ -199,37 +194,22 @@ class MatrixService {
199194
}
200195
}
201196

202-
String? get deviceId {
203-
return _client.deviceID;
204-
}
205-
206-
String? get deviceName {
207-
return _client.deviceName;
208-
}
197+
String? get deviceId => _client.deviceID;
198+
String? get deviceName => _client.deviceName;
209199

210200
Stream<KeyVerification> getIncomingKeyVerificationStream() {
211-
return _incomingKeyVerificationController.stream;
201+
return incomingKeyVerificationController.stream;
212202
}
213203

204+
Future<void> startKeyVerificationListener() async =>
205+
listenForKeyVerificationRequests(service: this);
206+
214207
Future<void> listen() async {
215208
try {
216209
_client.onLoginStateChanged.stream.listen((LoginState loginState) {
217210
debugPrint('LoginState: $loginState');
218211
});
219212

220-
_client.onKeyVerificationRequest.stream.listen((
221-
KeyVerification keyVerification,
222-
) {
223-
incomingKeyVerificationRunner = KeyVerificationRunner(
224-
keyVerification,
225-
controller: _incomingKeyVerificationRunnerController,
226-
name: 'Incoming KeyVerificationRunner',
227-
);
228-
229-
debugPrint('Key Verification Request from ${keyVerification.deviceId}');
230-
_incomingKeyVerificationController.add(keyVerification);
231-
});
232-
233213
if (syncRoomId == null) {
234214
_loggingDb.captureEvent(
235215
configNotFound,

0 commit comments

Comments
 (0)