@@ -1241,6 +1241,7 @@ pub struct ImportDescriptor {
1241
1241
change_network : bool ,
1242
1242
data_dir : Option < PathBuf > ,
1243
1243
imported_descriptor : form:: Value < String > ,
1244
+ wrong_network : bool ,
1244
1245
error : Option < String > ,
1245
1246
}
1246
1247
@@ -1252,21 +1253,35 @@ impl ImportDescriptor {
1252
1253
network_valid : true ,
1253
1254
data_dir : None ,
1254
1255
imported_descriptor : form:: Value :: default ( ) ,
1256
+ wrong_network : false ,
1255
1257
error : None ,
1256
1258
}
1257
1259
}
1258
1260
1259
- fn check_descriptor ( & mut self ) {
1261
+ fn check_descriptor ( & mut self , network : Network ) -> Option < LianaDescriptor > {
1260
1262
if !self . imported_descriptor . value . is_empty ( ) {
1261
1263
if let Ok ( desc) = LianaDescriptor :: from_str ( & self . imported_descriptor . value ) {
1262
- if self . network == Network :: Bitcoin {
1263
- self . imported_descriptor . valid = desc. all_xpubs_net_is ( self . network ) ;
1264
+ if network == Network :: Bitcoin {
1265
+ self . imported_descriptor . valid = desc. all_xpubs_net_is ( network) ;
1264
1266
} else {
1265
1267
self . imported_descriptor . valid = desc. all_xpubs_net_is ( Network :: Testnet ) ;
1266
1268
}
1269
+ if self . imported_descriptor . valid {
1270
+ self . wrong_network = false ;
1271
+ Some ( desc)
1272
+ } else {
1273
+ self . wrong_network = true ;
1274
+ None
1275
+ }
1267
1276
} else {
1268
1277
self . imported_descriptor . valid = false ;
1278
+ self . wrong_network = false ;
1279
+ None
1269
1280
}
1281
+ } else {
1282
+ self . wrong_network = false ;
1283
+ self . imported_descriptor . valid = true ;
1284
+ None
1270
1285
}
1271
1286
}
1272
1287
}
@@ -1281,18 +1296,21 @@ impl Step for ImportDescriptor {
1281
1296
let mut network_datadir = self . data_dir . clone ( ) . unwrap ( ) ;
1282
1297
network_datadir. push ( self . network . to_string ( ) ) ;
1283
1298
self . network_valid = !network_datadir. exists ( ) ;
1284
- self . check_descriptor ( ) ;
1299
+ self . check_descriptor ( self . network ) ;
1285
1300
}
1286
1301
Message :: DefineDescriptor ( message:: DefineDescriptor :: ImportDescriptor ( desc) ) => {
1287
1302
self . imported_descriptor . value = desc;
1288
- self . check_descriptor ( ) ;
1303
+ self . check_descriptor ( self . network ) ;
1289
1304
}
1290
1305
_ => { }
1291
1306
} ;
1292
1307
Command :: none ( )
1293
1308
}
1294
1309
1295
1310
fn load_context ( & mut self , ctx : & Context ) {
1311
+ if ctx. bitcoin_config . network != self . network {
1312
+ self . check_descriptor ( ctx. bitcoin_config . network ) ;
1313
+ }
1296
1314
self . network = ctx. bitcoin_config . network ;
1297
1315
self . data_dir = Some ( ctx. data_dir . clone ( ) ) ;
1298
1316
let mut network_datadir = ctx. data_dir . clone ( ) ;
@@ -1305,23 +1323,9 @@ impl Step for ImportDescriptor {
1305
1323
// Set to true in order to force the registration process to be shown to user.
1306
1324
ctx. hw_is_used = true ;
1307
1325
// descriptor forms for import or creation cannot be both empty or filled.
1308
- if !self . imported_descriptor . value . is_empty ( ) {
1309
- if let Ok ( desc) = LianaDescriptor :: from_str ( & self . imported_descriptor . value ) {
1310
- if self . network == Network :: Bitcoin {
1311
- self . imported_descriptor . valid = desc. all_xpubs_net_is ( self . network ) ;
1312
- } else {
1313
- self . imported_descriptor . valid = desc. all_xpubs_net_is ( Network :: Testnet ) ;
1314
- }
1315
- if self . imported_descriptor . valid {
1316
- ctx. descriptor = Some ( desc) ;
1317
- true
1318
- } else {
1319
- false
1320
- }
1321
- } else {
1322
- self . imported_descriptor . valid = false ;
1323
- false
1324
- }
1326
+ if let Some ( desc) = self . check_descriptor ( self . network ) {
1327
+ ctx. descriptor = Some ( desc) ;
1328
+ true
1325
1329
} else {
1326
1330
false
1327
1331
}
@@ -1334,6 +1338,7 @@ impl Step for ImportDescriptor {
1334
1338
self . network ,
1335
1339
self . network_valid ,
1336
1340
& self . imported_descriptor ,
1341
+ self . wrong_network ,
1337
1342
self . error . as_ref ( ) ,
1338
1343
)
1339
1344
}
0 commit comments