File tree Expand file tree Collapse file tree 1 file changed +33
-3
lines changed Expand file tree Collapse file tree 1 file changed +33
-3
lines changed Original file line number Diff line number Diff line change 1
1
import init , { defaultConfig , connect } from '@breeztech/breez-sdk-spark'
2
+ import { withTimeout } from '@/lib/time'
2
3
import { getUsername } from '@/wallets/lib/protocols/breezSpark'
3
4
4
5
export const name = 'BREEZ_SPARK'
5
6
7
+ const SDK_SYNC_TIMEOUT = 30_000
8
+
6
9
async function withSdk ( mnemonic , cb ) {
7
10
await init ( )
8
11
@@ -18,11 +21,38 @@ async function withSdk (mnemonic, cb) {
18
21
storageDir : 'breez-sdk-spark'
19
22
} )
20
23
21
- const result = await cb ( sdk )
24
+ try {
25
+ await waitForSync ( sdk )
26
+ return await cb ( sdk )
27
+ } finally {
28
+ sdk . disconnect ( )
29
+ }
30
+ }
31
+
32
+ async function waitForSync ( sdk ) {
33
+ const syncPromise = new Promise (
34
+ resolve => sdk . addEventListener ( new SyncEventListener ( resolve ) )
35
+ )
36
+ await withTimeout ( syncPromise , SDK_SYNC_TIMEOUT )
37
+ }
38
+
39
+ class SdkEventListener {
40
+ constructor ( event , resolve ) {
41
+ this . event = event
42
+ this . resolve = resolve
43
+ }
22
44
23
- sdk . disconnect ( )
45
+ onEvent ( event ) {
46
+ if ( event . type === this . event ) {
47
+ this . resolve ( )
48
+ }
49
+ }
50
+ }
24
51
25
- return result
52
+ class SyncEventListener extends SdkEventListener {
53
+ constructor ( resolve ) {
54
+ super ( 'synced' , resolve )
55
+ }
26
56
}
27
57
28
58
export async function sendPayment ( bolt11 , { mnemonic } , { signal } ) {
You can’t perform that action at this time.
0 commit comments