@@ -605,25 +605,23 @@ export class ProfileProvider {
605605 return this . askToEncryptKey ( data . key ) . then ( ( ) => {
606606 this . onGoingProcessProvider . resume ( ) ;
607607 const promises = [ ] ;
608-
609- // Will publish once all wallets are binded.
610- opts . skipEvent = true ;
611-
612608 data . walletClients . forEach ( walletClient => {
613- promises . push (
614- this . addAndBindWalletClient ( walletClient , data . key , opts )
615- ) ;
609+ promises . push ( this . addAndBindWalletClient ( walletClient , opts ) ) ;
616610 } ) ;
617- return Promise . all ( promises )
618- . then ( walletClients => {
619- this . events . publish ( 'Local/WalletListChange' ) ;
620- return this . checkIfAlreadyExist ( walletClients ) . then ( ( ) => {
621- return Promise . resolve ( _ . compact ( walletClients ) ) ;
611+ return this . keyProvider . addKey ( data . key ) . then ( ( ) => {
612+ return Promise . all ( promises )
613+ . then ( walletClients => {
614+ return this . storeProfileIfDirty ( ) . then ( ( ) => {
615+ this . events . publish ( 'Local/WalletListChange' ) ;
616+ return this . checkIfAlreadyExist ( walletClients ) . then ( ( ) => {
617+ return Promise . resolve ( _ . compact ( walletClients ) ) ;
618+ } ) ;
619+ } ) ;
620+ } )
621+ . catch ( ( ) => {
622+ return Promise . reject ( 'failed to bind wallets' ) ;
622623 } ) ;
623- } )
624- . catch ( ( ) => {
625- return Promise . reject ( 'failed to bind wallets' ) ;
626- } ) ;
624+ } ) ;
627625 } ) ;
628626 }
629627
@@ -662,7 +660,7 @@ export class ProfileProvider {
662660 }
663661
664662 // Adds and bind a new client to the profile
665- private async addAndBindWalletClient ( wallet , key , opts ) : Promise < any > {
663+ private async addAndBindWalletClient ( wallet , opts ) : Promise < any > {
666664 if ( ! wallet || ! wallet . credentials ) {
667665 return Promise . reject ( this . translate . instant ( 'Could not access wallet' ) ) ;
668666 }
@@ -673,20 +671,14 @@ export class ProfileProvider {
673671 return Promise . resolve ( ) ;
674672 }
675673
676- await this . keyProvider . addKey ( key ) ;
677-
678674 const skipKeyValidation : boolean = this . shouldSkipValidation ( walletId ) ;
679675 if ( ! skipKeyValidation ) {
680676 this . logger . debug ( 'Trying to runValidation: ' + walletId ) ;
681677 this . runValidation ( wallet ) ;
682678 }
683679
684- await this . bindWalletClient ( wallet ) ;
685-
686680 this . saveBwsUrl ( walletId , opts ) ;
687-
688- return this . storeProfileIfDirty ( ) . then ( ( ) => {
689- if ( ! opts . skipEvent ) this . events . publish ( 'Local/WalletListChange' ) ;
681+ return this . bindWalletClient ( wallet ) . then ( ( ) => {
690682 return Promise . resolve ( wallet ) ;
691683 } ) ;
692684 }
@@ -769,11 +761,18 @@ export class ProfileProvider {
769761 this . onGoingProcessProvider . pause ( ) ;
770762 return this . askToEncryptKey ( data . key ) . then ( ( ) => {
771763 this . onGoingProcessProvider . resume ( ) ;
772- return this . addAndBindWalletClient ( data . walletClient , data . key , {
773- bwsurl : opts . bwsurl
774- } ) . then ( walletClient => {
775- return this . checkIfAlreadyExist ( [ ] . concat ( walletClient ) ) . then ( ( ) => {
776- return Promise . resolve ( walletClient ) ;
764+ return this . keyProvider . addKey ( data . key ) . then ( ( ) => {
765+ return this . addAndBindWalletClient ( data . walletClient , {
766+ bwsurl : opts . bwsurl
767+ } ) . then ( walletClient => {
768+ return this . storeProfileIfDirty ( ) . then ( ( ) => {
769+ this . events . publish ( 'Local/WalletListChange' ) ;
770+ return this . checkIfAlreadyExist ( [ ] . concat ( walletClient ) ) . then (
771+ ( ) => {
772+ return Promise . resolve ( walletClient ) ;
773+ }
774+ ) ;
775+ } ) ;
777776 } ) ;
778777 } ) ;
779778 } ) ;
@@ -1056,17 +1055,22 @@ export class ProfileProvider {
10561055 }
10571056 return reject ( err ) ;
10581057 }
1059- this . addAndBindWalletClient ( data . walletClient , data . key , {
1060- bwsurl : opts . bwsurl
1061- } )
1062- . then ( walletClient => {
1063- this . checkIfAlreadyExist ( [ ] . concat ( walletClient ) ) . then ( ( ) => {
1064- return resolve ( walletClient ) ;
1065- } ) ;
1058+ this . keyProvider . addKey ( data . key ) . then ( ( ) => {
1059+ this . addAndBindWalletClient ( data . walletClient , {
1060+ bwsurl : opts . bwsurl
10661061 } )
1067- . catch ( err => {
1068- return reject ( err ) ;
1069- } ) ;
1062+ . then ( walletClient => {
1063+ return this . storeProfileIfDirty ( ) . then ( ( ) => {
1064+ this . events . publish ( 'Local/WalletListChange' ) ;
1065+ this . checkIfAlreadyExist ( [ ] . concat ( walletClient ) ) . then ( ( ) => {
1066+ return resolve ( walletClient ) ;
1067+ } ) ;
1068+ } ) ;
1069+ } )
1070+ . catch ( err => {
1071+ return reject ( err ) ;
1072+ } ) ;
1073+ } ) ;
10701074 } ) ;
10711075 } ) ;
10721076 } ) ;
@@ -1352,8 +1356,15 @@ export class ProfileProvider {
13521356 this . onGoingProcessProvider . pause ( ) ;
13531357 return this . askToEncryptKey ( data . key , addingNewWallet ) . then ( ( ) => {
13541358 this . onGoingProcessProvider . resume ( ) ;
1355- return this . addAndBindWalletClient ( data . walletClient , data . key , {
1356- bwsurl : opts . bwsurl
1359+ return this . keyProvider . addKey ( data . key ) . then ( ( ) => {
1360+ return this . addAndBindWalletClient ( data . walletClient , {
1361+ bwsurl : opts . bwsurl
1362+ } ) . then ( walletClient => {
1363+ return this . storeProfileIfDirty ( ) . then ( ( ) => {
1364+ this . events . publish ( 'Local/WalletListChange' ) ;
1365+ return Promise . resolve ( walletClient ) ;
1366+ } ) ;
1367+ } ) ;
13571368 } ) ;
13581369 } ) ;
13591370 } ) ;
@@ -1368,8 +1379,15 @@ export class ProfileProvider {
13681379 this . onGoingProcessProvider . pause ( ) ;
13691380 return this . askToEncryptKey ( data . key , addingNewWallet ) . then ( ( ) => {
13701381 this . onGoingProcessProvider . resume ( ) ;
1371- return this . addAndBindWalletClient ( data . walletClient , data . key , {
1372- bwsurl : opts . bwsurl
1382+ return this . keyProvider . addKey ( data . key ) . then ( ( ) => {
1383+ return this . addAndBindWalletClient ( data . walletClient , {
1384+ bwsurl : opts . bwsurl
1385+ } ) . then ( walletClient => {
1386+ return this . storeProfileIfDirty ( ) . then ( ( ) => {
1387+ this . events . publish ( 'Local/WalletListChange' ) ;
1388+ return Promise . resolve ( walletClient ) ;
1389+ } ) ;
1390+ } ) ;
13731391 } ) ;
13741392 } ) ;
13751393 } ) ;
0 commit comments