Merge pull request #358 from lbryio/fix_wallet_init_3

Fix wallet initialization
This commit is contained in:
Umpei Kay Kurokawa 2016-12-22 12:12:27 -05:00 committed by GitHub
commit 552ed77882

View file

@ -771,7 +771,6 @@ class LBRYumWallet(Wallet):
self._config = config
self.network = None
self.wallet = None
self.cmd_runner = None
self.first_run = False
self.printed_retrieving_headers = False
self._start_check = None
@ -809,10 +808,11 @@ class LBRYumWallet(Wallet):
self._start_check = task.LoopingCall(check_started)
d.addCallback(lambda _: self._load_wallet())
d.addCallback(self._save_wallet)
d.addCallback(lambda _: self._start_check.start(.1))
d.addCallback(lambda _: network_start_d)
d.addCallback(lambda _: self._load_wallet())
d.addCallback(lambda _: self._get_cmd_runner())
d.addCallback(lambda _: self._load_blockchain())
return d
def _stop(self):
@ -843,21 +843,20 @@ class LBRYumWallet(Wallet):
return d
def _load_wallet(self):
path = self.config.get_wallet_path()
storage = lbryum.wallet.WalletStorage(path)
wallet = lbryum.wallet.Wallet(storage)
if not storage.file_exists:
self.first_run = True
seed = wallet.make_seed()
wallet.add_seed(seed, None)
wallet.create_master_keys(None)
wallet.create_main_account()
wallet.synchronize()
self.wallet = wallet
return defer.succeed(True)
def get_wallet():
path = self.config.get_wallet_path()
storage = lbryum.wallet.WalletStorage(path)
wallet = lbryum.wallet.Wallet(storage)
if not storage.file_exists:
self.first_run = True
seed = wallet.make_seed()
wallet.add_seed(seed, None)
wallet.create_master_keys(None)
wallet.create_main_account()
wallet.synchronize()
self.wallet = wallet
return defer.succeed(True)
def _load_blockchain(self):
blockchain_caught_d = defer.Deferred()
def check_caught_up():
@ -900,30 +899,30 @@ class LBRYumWallet(Wallet):
return defer.fail(err)
self._catch_up_check = task.LoopingCall(check_caught_up)
d = get_wallet()
d.addCallback(self._save_wallet)
d.addCallback(lambda _: self.wallet.start_threads(self.network))
d = defer.succeed(self.wallet.start_threads(self.network))
d.addCallback(lambda _: self._catch_up_check.start(.1))
d.addErrback(log_error)
d.addCallback(lambda _: blockchain_caught_d)
return d
def _get_cmd_runner(self):
self.cmd_runner = Commands(self.config, self.wallet, self.network)
return Commands(self.config, self.wallet, self.network)
# run commands as a defer.succeed,
# lbryum commands should be run this way , unless if the command
# only makes a lbrum server query, use _run_cmd_as_defer_to_thread()
def _run_cmd_as_defer_succeed(self, command_name, *args):
cmd_runner = self._get_cmd_runner()
cmd = known_commands[command_name]
func = getattr(self.cmd_runner, cmd.name)
func = getattr(cmd_runner, cmd.name)
return defer.succeed(func(*args))
# run commands as a deferToThread, lbryum commands that only make
# queries to lbryum server should be run this way
def _run_cmd_as_defer_to_thread(self, command_name, *args):
cmd_runner = self._get_cmd_runner()
cmd = known_commands[command_name]
func = getattr(self.cmd_runner, cmd.name)
func = getattr(cmd_runner, cmd.name)
return threads.deferToThread(func, *args)
def get_balance(self):