twonly-app/lib/src/database/signal/connect_sender_key_store.dart
2025-05-30 17:24:02 +02:00

30 lines
1.1 KiB
Dart

import 'package:drift/drift.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/twonly_database.dart';
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
class ConnectSenderKeyStore extends SenderKeyStore {
@override
Future<SenderKeyRecord> loadSenderKey(SenderKeyName senderKeyName) async {
SignalSenderKeyStore? identity =
await (twonlyDB.select(twonlyDB.signalSenderKeyStores)
..where((t) => t.senderKeyName.equals(senderKeyName.serialize())))
.getSingleOrNull();
if (identity == null) {
throw InvalidKeyIdException(
'No such sender key record! - $senderKeyName');
}
return SenderKeyRecord.fromSerialized(identity.senderKey);
}
@override
Future<void> storeSenderKey(
SenderKeyName senderKeyName, SenderKeyRecord record) async {
await twonlyDB.into(twonlyDB.signalSenderKeyStores).insert(
SignalSenderKeyStoresCompanion(
senderKey: Value(record.serialize()),
senderKeyName: Value(senderKeyName.serialize()),
),
);
}
}