forked from LBRYCommunity/lbry-sdk
txo_list --resolve now works for signed supports by resolving the signing channel
This commit is contained in:
parent
7f375f42d8
commit
ccb250b410
2 changed files with 33 additions and 0 deletions
|
@ -937,6 +937,11 @@ class Ledger(metaclass=LedgerRegistry):
|
||||||
return self.db.get_purchase_count(**constraints)
|
return self.db.get_purchase_count(**constraints)
|
||||||
|
|
||||||
async def _resolve_for_local_results(self, accounts, txos):
|
async def _resolve_for_local_results(self, accounts, txos):
|
||||||
|
txos = await self._resolve_for_local_claim_results(accounts, txos)
|
||||||
|
txos = await self._resolve_for_local_support_results(accounts, txos)
|
||||||
|
return txos
|
||||||
|
|
||||||
|
async def _resolve_for_local_claim_results(self, accounts, txos):
|
||||||
results = []
|
results = []
|
||||||
response = await self.resolve(
|
response = await self.resolve(
|
||||||
accounts, [txo.permanent_url for txo in txos if txo.can_decode_claim]
|
accounts, [txo.permanent_url for txo in txos if txo.can_decode_claim]
|
||||||
|
@ -952,6 +957,23 @@ class Ledger(metaclass=LedgerRegistry):
|
||||||
results.append(txo)
|
results.append(txo)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
async def _resolve_for_local_support_results(self, accounts, txos):
|
||||||
|
channel_ids = set()
|
||||||
|
signed_support_txos = []
|
||||||
|
for txo in txos:
|
||||||
|
support = txo.can_decode_support
|
||||||
|
if support and support.signing_channel_id:
|
||||||
|
channel_ids.add(support.signing_channel_id)
|
||||||
|
signed_support_txos.append(txo)
|
||||||
|
if channel_ids:
|
||||||
|
channels = {
|
||||||
|
channel.claim_id: channel for channel in
|
||||||
|
(await self.claim_search(accounts, claim_ids=list(channel_ids)))[0]
|
||||||
|
}
|
||||||
|
for txo in signed_support_txos:
|
||||||
|
txo.channel = channels.get(txo.support.signing_channel_id)
|
||||||
|
return txos
|
||||||
|
|
||||||
async def get_claims(self, resolve=False, **constraints):
|
async def get_claims(self, resolve=False, **constraints):
|
||||||
claims = await self.db.get_claims(**constraints)
|
claims = await self.db.get_claims(**constraints)
|
||||||
if resolve:
|
if resolve:
|
||||||
|
|
|
@ -461,6 +461,17 @@ class TransactionCommands(ClaimTestCase):
|
||||||
|
|
||||||
class TransactionOutputCommands(ClaimTestCase):
|
class TransactionOutputCommands(ClaimTestCase):
|
||||||
|
|
||||||
|
async def test_txo_list_resolve_supports(self):
|
||||||
|
channel = self.get_claim_id(await self.channel_create('@identity'))
|
||||||
|
stream = self.get_claim_id(await self.stream_create())
|
||||||
|
support = await self.support_create(stream, channel_id=channel)
|
||||||
|
r, = await self.txo_list(type='support')
|
||||||
|
self.assertEqual(r['txid'], support['txid'])
|
||||||
|
self.assertNotIn('name', r['signing_channel'])
|
||||||
|
r, = await self.txo_list(type='support', resolve=True)
|
||||||
|
self.assertIn('name', r['signing_channel'])
|
||||||
|
self.assertEqual(r['signing_channel']['name'], '@identity')
|
||||||
|
|
||||||
async def test_txo_list_by_channel_filtering(self):
|
async def test_txo_list_by_channel_filtering(self):
|
||||||
channel_foo = self.get_claim_id(await self.channel_create('@foo'))
|
channel_foo = self.get_claim_id(await self.channel_create('@foo'))
|
||||||
channel_bar = self.get_claim_id(await self.channel_create('@bar'))
|
channel_bar = self.get_claim_id(await self.channel_create('@bar'))
|
||||||
|
|
Loading…
Reference in a new issue