Check for max usable balance before updating
This commit is contained in:
parent
d72ef784ed
commit
2368433b22
3 changed files with 17 additions and 0 deletions
|
@ -537,6 +537,10 @@ class Wallet(object):
|
|||
decoded = ClaimDict.load_dict(metadata)
|
||||
serialized = decoded.serialized
|
||||
|
||||
amt = yield self.get_max_usable_balance_for_claim(name)
|
||||
if bid > amt:
|
||||
raise InsufficientFundsError()
|
||||
|
||||
claim = yield self._send_name_claim(name, serialized.encode('hex'),
|
||||
bid, certificate_id, claim_address, change_address)
|
||||
|
||||
|
@ -972,6 +976,11 @@ class LBRYumWallet(Wallet):
|
|||
lambda result: Decimal(result['confirmed']) + Decimal(result.get('unconfirmed', 0.0)))
|
||||
return d
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def get_max_usable_balance_for_claim(self, claim_name):
|
||||
amt = yield self._run_cmd_as_defer_to_thread('get_max_spendable_amt_for_claim', claim_name)
|
||||
defer.returnValue(amt)
|
||||
|
||||
# Always create and return a brand new address
|
||||
def get_new_address(self, for_change=False, account=None):
|
||||
return defer.succeed(self.wallet.create_new_address(account=account,
|
||||
|
|
|
@ -2005,6 +2005,12 @@ class Daemon(AuthJSONRPCServer):
|
|||
if bid <= 0.0:
|
||||
raise ValueError("Bid value must be greater than 0.0")
|
||||
|
||||
amt = yield self.session.wallet.get_max_usable_balance_for_claim(name)
|
||||
if bid > amt:
|
||||
raise InsufficientFundsError(
|
||||
"Please lower the bid value, the max amount you can specify for this claim is {}"
|
||||
.format(amt))
|
||||
|
||||
metadata = metadata or {}
|
||||
if fee is not None:
|
||||
metadata['fee'] = fee
|
||||
|
|
|
@ -73,6 +73,8 @@ class MocLbryumWallet(LBRYumWallet):
|
|||
def _save_name_metadata(self, name, claim_outpoint, sd_hash):
|
||||
return defer.succeed(True)
|
||||
|
||||
def get_max_usable_balance_for_claim(self, name):
|
||||
return defer.succeed(3)
|
||||
|
||||
class WalletTest(unittest.TestCase):
|
||||
@defer.inlineCallbacks
|
||||
|
|
Loading…
Reference in a new issue