update channel balance checking to match claim

Simple balance check before calling get_max_usable_balance_for_claim - matches what happens on the claim.

Also provide clearer error message about maximum amount
This commit is contained in:
Thomas Zarebczan 2018-03-15 09:42:17 -04:00 committed by GitHub
parent 80fcb760b7
commit b218e84d29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1852,15 +1852,17 @@ class Daemon(AuthJSONRPCServer):
if amount <= 0: if amount <= 0:
raise Exception("Invalid amount") raise Exception("Invalid amount")
yield self.session.wallet.update_balance()
if amount >= self.session.wallet.get_balance():
balance = yield self.session.wallet.get_max_usable_balance_for_claim(channel_name) balance = yield self.session.wallet.get_max_usable_balance_for_claim(channel_name)
max_bid_amount = balance - MAX_UPDATE_FEE_ESTIMATE max_bid_amount = balance - MAX_UPDATE_FEE_ESTIMATE
if balance <= MAX_UPDATE_FEE_ESTIMATE: if balance <= MAX_UPDATE_FEE_ESTIMATE:
raise InsufficientFundsError( raise InsufficientFundsError(
"Insufficient funds, please deposit additional LBC. Minimum additional LBC needed {}" "Insufficient funds, please deposit additional LBC. Minimum additional LBC needed {}"
.format(MAX_UPDATE_FEE_ESTIMATE - balance)) . format(MAX_UPDATE_FEE_ESTIMATE - balance))
elif amount > max_bid_amount: elif amount > max_bid_amount:
raise InsufficientFundsError( raise InsufficientFundsError(
"Please lower the bid value, the maximum amount you can specify for this claim is {}" "Please lower the bid value, the maximum amount you can specify for this channel is {}"
.format(max_bid_amount)) .format(max_bid_amount))
result = yield self.session.wallet.claim_new_channel(channel_name, amount) result = yield self.session.wallet.claim_new_channel(channel_name, amount)
@ -2047,7 +2049,7 @@ class Daemon(AuthJSONRPCServer):
.format(MAX_UPDATE_FEE_ESTIMATE - balance)) .format(MAX_UPDATE_FEE_ESTIMATE - balance))
elif bid > max_bid_amount: elif bid > max_bid_amount:
raise InsufficientFundsError( raise InsufficientFundsError(
"Please lower the bid. After accounting for the estimated fee, you only have {} left." "Please lower the bid value, the maximum amount you can specify for this claim is {}."
.format(max_bid_amount)) .format(max_bid_amount))
metadata = metadata or {} metadata = metadata or {}