twonly-app/lib/src/database/signal/connect_sender_key_store.dart
2025-10-19 02:45:17 +02:00

32 lines
1.1 KiB
Dart

import 'package:drift/drift.dart';
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/twonly.db.dart';
class ConnectSenderKeyStore extends SenderKeyStore {
@override
Future<SenderKeyRecord> loadSenderKey(SenderKeyName senderKeyName) async {
final 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()),
),
);
}
}