dev
dart 66 lines 1.81 KB
Raw
1 import 'package:payjoin_flutter/src/generated/api/receive.dart';
2 import 'package:payjoin_flutter/src/generated/api/send.dart';
3
4 class PayjoinSenderPersister implements DartSenderPersister {
5 static DartSenderPersister impl() {
6 final impl = PayjoinSenderPersister();
7 return DartSenderPersister(
8 save: (sender) => impl.save(sender: sender),
9 load: (token) => impl.load(token: token),
10 );
11 }
12
13 final Map<String, FfiSender> _store = {};
14
15 Future<SenderToken> save({required FfiSender sender}) async {
16 final token = sender.key();
17 _store[token.toBytes().toString()] = sender;
18 return token;
19 }
20
21 Future<FfiSender> load({required SenderToken token}) async {
22 final sender = _store[token.toBytes().toString()];
23 if (sender == null) {
24 throw Exception('Sender not found for the provided token.');
25 }
26 return sender;
27 }
28
29 @override
30 void dispose() => _store.clear();
31
32 @override
33 bool get isDisposed => _store.isEmpty;
34 }
35
36 class PayjoinReceiverPersister implements DartReceiverPersister {
37 static DartReceiverPersister impl() {
38 final impl = PayjoinReceiverPersister();
39 return DartReceiverPersister(
40 save: (receiver) => impl.save(receiver: receiver),
41 load: (token) => impl.load(token: token),
42 );
43 }
44
45 final Map<String, FfiReceiver> _store = {};
46
47 Future<ReceiverToken> save({required FfiReceiver receiver}) async {
48 final token = receiver.key();
49 _store[token.toBytes().toString()] = receiver;
50 return token;
51 }
52
53 Future<FfiReceiver> load({required ReceiverToken token}) async {
54 final receiver = _store[token.toBytes().toString()];
55 if (receiver == null) {
56 throw Exception('Receiver not found for the provided token.');
57 }
58 return receiver;
59 }
60
61 @override
62 void dispose() => _store.clear();
63
64 @override
65 bool get isDisposed => _store.isEmpty;
66 }