@@ -181,51 +181,56 @@ func ConnectServer(nameSpace string, mailboxServer string, isDevServer bool,
181
181
return fmt .Errorf ("unknown namespace: %s" , nameSpace )
182
182
}
183
183
184
- statusChecker , lndConnect , err := core .MailboxRPCConnection (
185
- mailboxServer , pairingPhrase , localPriv , remotePub ,
186
- func (key * btcec.PublicKey ) error {
187
- mc .remoteKeyReceiveCallback .SendResult (
188
- hex .EncodeToString (key .SerializeCompressed ()),
189
- )
190
-
191
- return nil
192
- }, func (data []byte ) error {
193
- parts := strings .Split (string (data ), ": " )
194
- if len (parts ) != 2 || parts [0 ] != "Macaroon" {
195
- return fmt .Errorf ("authdata does " +
196
- "not contain a macaroon" )
197
- }
198
-
199
- macBytes , err := hex .DecodeString (parts [1 ])
200
- if err != nil {
201
- return err
202
- }
203
-
204
- mac := & macaroon.Macaroon {}
205
- err = mac .UnmarshalBinary (macBytes )
206
- if err != nil {
207
- return fmt .Errorf ("unable to decode " +
208
- "macaroon: %v" , err )
209
- }
210
-
211
- mc .mac = mac
212
-
213
- mc .authDataCallback .SendResult (string (data ))
184
+ // Since the connection function is blocking, we need to spin it off
185
+ // in another goroutine here. See https://pkg.go.dev/syscall/js#FuncOf.
186
+ go func () {
187
+ statusChecker , lndConnect , err := core .MailboxRPCConnection (
188
+ mailboxServer , pairingPhrase , localPriv , remotePub ,
189
+ func (key * btcec.PublicKey ) error {
190
+ mc .remoteKeyReceiveCallback .SendResult (
191
+ hex .EncodeToString (key .SerializeCompressed ()),
192
+ )
193
+
194
+ return nil
195
+ }, func (data []byte ) error {
196
+ parts := strings .Split (string (data ), ": " )
197
+ if len (parts ) != 2 || parts [0 ] != "Macaroon" {
198
+ return fmt .Errorf ("authdata does " +
199
+ "not contain a macaroon" )
200
+ }
201
+
202
+ macBytes , err := hex .DecodeString (parts [1 ])
203
+ if err != nil {
204
+ return err
205
+ }
206
+
207
+ mac := & macaroon.Macaroon {}
208
+ err = mac .UnmarshalBinary (macBytes )
209
+ if err != nil {
210
+ return fmt .Errorf ("unable to decode " +
211
+ "macaroon: %v" , err )
212
+ }
213
+
214
+ mc .mac = mac
215
+
216
+ mc .authDataCallback .SendResult (string (data ))
217
+
218
+ return nil
219
+ },
220
+ )
221
+ if err != nil {
222
+ log .Errorf ("Error running wasm client: %v" , err )
223
+ }
214
224
215
- return nil
216
- },
217
- )
218
- if err != nil {
219
- return err
220
- }
225
+ mc .statusChecker = statusChecker
226
+ mc .lndConn , err = lndConnect ()
227
+ if err != nil {
228
+ log .Errorf ("Error running wasm client: %v" , err )
229
+ }
221
230
222
- mc .statusChecker = statusChecker
223
- mc .lndConn , err = lndConnect ()
224
- if err != nil {
225
- return err
226
- }
231
+ log .Debugf ("Mobile client connected to RPC" )
232
+ }()
227
233
228
- log .Debugf ("Mobile client connected to RPC" )
229
234
return nil
230
235
}
231
236
0 commit comments