maybeAutoRequest method
Attempt auto-request for a key
Implementation
FutureOr<void> maybeAutoRequest(
String roomId,
String sessionId,
String? senderKey, {
bool tryOnlineBackup = true,
bool onlineKeyBackupOnly = true,
bool awaitRequest = false,
}) async {
final room = client.getRoomById(roomId);
final requestIdent = '$roomId|$sessionId';
if (room != null && !client.isUnknownSession) {
final existingReqCompleter = _requestedSessionIdCompleters[requestIdent];
if (existingReqCompleter != null) {
if (awaitRequest) {
await existingReqCompleter.future;
}
// return if already exists (after awaiting completion if required)
return;
}
Future<void> requestFn() async {
final completer = Completer<void>();
_requestedSessionIdCompleters[requestIdent] = completer;
await request(
room,
sessionId,
senderKey,
tryOnlineBackup: tryOnlineBackup,
onlineKeyBackupOnly: onlineKeyBackupOnly,
);
completer.complete();
}
if (awaitRequest) {
await requestFn();
} else {
runInRoot(requestFn);
}
}
}