@@ -3657,11 +3657,12 @@ def import_address(self, address: str) -> str:
36573657    def  delete_address (self , address : str ) ->  None :
36583658        if  not  self .db .has_imported_address (address ):
36593659            return 
3660-         if  len (self .get_addresses ()) <=  1 :
3661-             raise  UserFacingException (_ ('Cannot delete last remaining address from wallet' ))
3662-         transactions_to_remove  =  set ()  # only referred to by this address 
3663-         transactions_new  =  set ()  # txs that are not only referred to by address 
36643660        with  self .lock :
3661+             if  len (self .get_addresses ()) <=  1 :  # check this inside lock 
3662+                 raise  UserFacingException (_ ('Cannot delete last remaining address from wallet' ))
3663+             transactions_to_remove  =  set ()  # only referred to by this address 
3664+             transactions_new  =  set ()  # txs that are not only referred to by address 
3665+             # rm txs from history 
36653666            for  addr  in  self .db .get_history ():
36663667                details  =  self .adb .get_address_history (addr ).items ()
36673668                if  addr  ==  address :
@@ -3674,26 +3675,30 @@ def delete_address(self, address: str) -> None:
36743675            self .db .remove_addr_history (address )
36753676            for  tx_hash  in  transactions_to_remove :
36763677                self .adb ._remove_transaction (tx_hash )
3677-         self .set_label (address , None )
3678-         if  req  :=  self .get_request_by_addr (address ):
3679-             self .delete_request (req .get_id ())
3680-         self .set_frozen_state_of_addresses ([address ], False , write_to_disk = False )
3681-         pubkey  =  self .get_public_key (address )
3682-         self .db .remove_imported_address (address )
3683-         if  pubkey :
3684-             # delete key iff no other address uses it (e.g. p2pkh and p2wpkh for same key) 
3685-             for  txin_type  in  bitcoin .WIF_SCRIPT_TYPES .keys ():
3686-                 try :
3687-                     addr2  =  bitcoin .pubkey_to_address (txin_type , pubkey )
3688-                 except  NotImplementedError :
3689-                     pass 
3678+             # rm label for addr 
3679+             # TODO rm label for txids? 
3680+             self .set_label (address , None )
3681+             # rm receive requests for addr 
3682+             if  req  :=  self .get_request_by_addr (address ):
3683+                 self .delete_request (req .get_id ())
3684+             self .set_frozen_state_of_addresses ([address ], False , write_to_disk = False )
3685+             # rm corresponding key from keystore 
3686+             pubkey  =  self .get_public_key (address )
3687+             self .db .remove_imported_address (address )
3688+             if  pubkey :
3689+                 # delete key iff no other address uses it (e.g. p2pkh and p2wpkh for same key) 
3690+                 for  txin_type  in  bitcoin .WIF_SCRIPT_TYPES .keys ():
3691+                     try :
3692+                         addr2  =  bitcoin .pubkey_to_address (txin_type , pubkey )
3693+                     except  NotImplementedError :
3694+                         pass 
3695+                     else :
3696+                         if  self .db .has_imported_address (addr2 ):
3697+                             break 
36903698                else :
3691-                     if  self .db .has_imported_address (addr2 ):
3692-                         break 
3693-             else :
3694-                 self .keystore .delete_imported_key (pubkey )
3695-                 self .save_keystore ()
3696-         self .save_db ()
3699+                     self .keystore .delete_imported_key (pubkey )
3700+                     self .save_keystore ()
3701+             self .save_db ()
36973702
36983703    def  get_change_addresses_for_new_transaction (self , * args , ** kwargs ) ->  List [str ]:
36993704        # for an imported wallet, if all "change addresses" are already used, 
0 commit comments