create a PendingAccount if coins have been sent to next_account

This commit is contained in:
ThomasV 2014-09-10 10:09:13 +02:00
parent 501bbdbd67
commit 374daa25af
3 changed files with 19 additions and 2 deletions

View File

@ -2281,7 +2281,7 @@ class ElectrumWindow(QMainWindow):
vbox.addLayout(h) vbox.addLayout(h)
private_keys = {} private_keys = {}
addresses = self.wallet.addresses(True, False) addresses = self.wallet.addresses(True)
done = False done = False
def privkeys_thread(): def privkeys_thread():
for addr in addresses: for addr in addresses:

View File

@ -1343,6 +1343,13 @@ class BIP32_HD_Wallet(BIP32_Wallet):
l.append(next_address) l.append(next_address)
return l return l
def get_address_index(self, address):
if self.next_account:
next_id, next_xpub, next_address = self.next_account
if address == next_address:
return next_id, (0,0)
return BIP32_Wallet.get_address_index(self, address)
def num_accounts(self): def num_accounts(self):
keys = [] keys = []
for k, v in self.accounts.items(): for k, v in self.accounts.items():
@ -1390,6 +1397,9 @@ class BIP32_HD_Wallet(BIP32_Wallet):
assert type(self.accounts.get(k)) == PendingAccount assert type(self.accounts.get(k)) == PendingAccount
self.accounts.pop(k) self.accounts.pop(k)
self.save_accounts() self.save_accounts()
# prepare the next account
self.next_account = self.get_next_account(password)
self.storage.put('next_account', self.next_account)
def create_pending_account(self, name, password): def create_pending_account(self, name, password):
next_id, next_xpub, next_address = self.next_account if self.next_account else self.get_next_account_address(password) next_id, next_xpub, next_address = self.next_account if self.next_account else self.get_next_account_address(password)
@ -1407,6 +1417,7 @@ class BIP32_HD_Wallet(BIP32_Wallet):
if self.next_account is None: if self.next_account is None:
try: try:
self.next_account = self.get_next_account(None) self.next_account = self.get_next_account(None)
self.storage.put('next_account', self.next_account)
except: except:
pass pass
@ -1418,6 +1429,12 @@ class BIP32_HD_Wallet(BIP32_Wallet):
self.add_account(next_id, BIP32_Account({'xpub':next_xpub})) self.add_account(next_id, BIP32_Account({'xpub':next_xpub}))
# here the user should get a notification # here the user should get a notification
self.next_account = None self.next_account = None
self.storage.put('next_account', self.next_account)
elif self.history.get(next_address, []):
if next_id not in self.accounts:
print_error("create pending account", next_id)
self.accounts[next_id] = PendingAccount({'pending':next_address})
self.save_accounts()

View File

@ -351,7 +351,7 @@ class TrezorWallet(NewWallet):
def check_proper_device(self): def check_proper_device(self):
self.get_client().ping('t') self.get_client().ping('t')
if not self.device_checked: if not self.device_checked:
address = self.addresses(False, False)[0] address = self.addresses(False)[0]
address_id = self.address_id(address) address_id = self.address_id(address)
n = self.get_client().expand_path(address_id) n = self.get_client().expand_path(address_id)
device_address = self.get_client().get_address('Bitcoin', n) device_address = self.get_client().get_address('Bitcoin', n)