@@ -6,9 +6,29 @@ import {
6
6
serviceName ,
7
7
validation ,
8
8
} from './configs' ;
9
-
9
+ import { dockService } from '../dock/service' ;
10
10
import { RelayService as relayServiceClient } from '@docknetwork/wallet-sdk-relay-service/lib' ;
11
11
12
+ export function waitFor ( condition , timeout ) {
13
+ return new Promise ( ( resolve , reject ) => {
14
+ const interval = setInterval ( async ( ) => {
15
+ if ( await Promise . resolve ( condition ( ) ) ) {
16
+ clearInterval ( interval ) ;
17
+ resolve ( true ) ;
18
+ }
19
+ } , 400 ) ;
20
+
21
+ setTimeout ( ( ) => {
22
+ clearInterval ( interval ) ;
23
+ reject ( new Error ( 'Timed out' ) ) ;
24
+ } , timeout ) ;
25
+ } ) ;
26
+ }
27
+
28
+ function ensureDockNetwork ( ) {
29
+ return waitFor ( ( ) => dockService . isApiConnected ( ) , 8000 ) ;
30
+ }
31
+
12
32
/**
13
33
* RelayService
14
34
*/
@@ -24,18 +44,27 @@ export class RelayService {
24
44
this . name = serviceName ;
25
45
}
26
46
27
- sendMessage ( params : SendMessageParams ) {
47
+ async sendMessage ( params : SendMessageParams ) {
28
48
validation . sendMessage ( params ) ;
49
+
50
+ await ensureDockNetwork ( ) ;
51
+
29
52
return relayServiceClient . sendMessage ( params ) ;
30
53
}
31
54
32
- resolveDidcommMessage ( params : ResolveDidcommMessageParams ) {
55
+ async resolveDidcommMessage ( params : ResolveDidcommMessageParams ) {
33
56
validation . resolveDidcommMessage ( params ) ;
57
+
58
+ await ensureDockNetwork ( ) ;
59
+
34
60
return relayServiceClient . resolveDidcommMessage ( params ) ;
35
61
}
36
62
37
- getMessages ( params : GetMessagesParams ) {
63
+ async getMessages ( params : GetMessagesParams ) {
38
64
validation . getMessages ( params ) ;
65
+
66
+ await ensureDockNetwork ( ) ;
67
+
39
68
return relayServiceClient . getMessages ( params ) ;
40
69
}
41
70
0 commit comments