mirror of
https://github.com/aljazceru/nutshell.git
synced 2026-01-03 17:04:21 +01:00
Fix Tokenv4 handling of base64 keysets (#575)
* wip: handle tokenv4 if the keyset is base64 * wip * Tokens now dataclasses * Deserialize DLEQ from string * add tokenv3/v4 base64 keyset ID tests * fix cli
This commit is contained in:
@@ -15,7 +15,7 @@ import click
|
||||
from click import Context
|
||||
from loguru import logger
|
||||
|
||||
from ...core.base import Invoice, Method, MintQuoteState, TokenV3, TokenV4, Unit
|
||||
from ...core.base import Invoice, Method, MintQuoteState, TokenV4, Unit
|
||||
from ...core.helpers import sum_proofs
|
||||
from ...core.json_rpc.base import JSONRPCNotficationParams
|
||||
from ...core.logging import configure_logger
|
||||
@@ -441,6 +441,16 @@ async def swap(ctx: Context):
|
||||
@coro
|
||||
async def balance(ctx: Context, verbose):
|
||||
wallet: Wallet = ctx.obj["WALLET"]
|
||||
if verbose:
|
||||
wallet = await wallet.with_db(
|
||||
url=wallet.url,
|
||||
db=wallet.db.db_location,
|
||||
name=wallet.name,
|
||||
skip_db_read=False,
|
||||
unit=wallet.unit.name,
|
||||
load_all_keysets=True,
|
||||
)
|
||||
|
||||
unit_balances = wallet.balance_per_unit()
|
||||
await wallet.load_proofs(reload=True)
|
||||
|
||||
@@ -597,13 +607,13 @@ async def receive_cli(
|
||||
# verify that we trust the mint in this tokens
|
||||
# ask the user if they want to trust the new mint
|
||||
mint_url = token_obj.mint
|
||||
mint_wallet = Wallet(
|
||||
mint_wallet = await Wallet.with_db(
|
||||
mint_url,
|
||||
os.path.join(settings.cashu_dir, wallet.name),
|
||||
unit=token_obj.unit,
|
||||
)
|
||||
await verify_mint(mint_wallet, mint_url)
|
||||
receive_wallet = await receive(wallet, token_obj)
|
||||
receive_wallet = await receive(mint_wallet, token_obj)
|
||||
ctx.obj["WALLET"] = receive_wallet
|
||||
elif nostr:
|
||||
await receive_nostr(wallet)
|
||||
@@ -672,8 +682,8 @@ async def burn(ctx: Context, token: str, all: bool, force: bool, delete: str):
|
||||
proofs = [proof for proof in reserved_proofs if proof["send_id"] == delete]
|
||||
else:
|
||||
# check only the specified ones
|
||||
token_obj = TokenV3.deserialize(token)
|
||||
proofs = token_obj.get_proofs()
|
||||
tokenObj = deserialize_token_from_string(token)
|
||||
proofs = tokenObj.proofs
|
||||
|
||||
if delete:
|
||||
await wallet.invalidate(proofs)
|
||||
@@ -709,10 +719,18 @@ async def burn(ctx: Context, token: str, all: bool, force: bool, delete: str):
|
||||
@coro
|
||||
async def pending(ctx: Context, legacy, number: int, offset: int):
|
||||
wallet: Wallet = ctx.obj["WALLET"]
|
||||
wallet = await Wallet.with_db(
|
||||
url=wallet.url,
|
||||
db=wallet.db.db_location,
|
||||
name=wallet.name,
|
||||
skip_db_read=False,
|
||||
unit=wallet.unit.name,
|
||||
load_all_keysets=True,
|
||||
)
|
||||
reserved_proofs = await get_reserved_proofs(wallet.db)
|
||||
if len(reserved_proofs):
|
||||
print("--------------------------\n")
|
||||
sorted_proofs = sorted(reserved_proofs, key=itemgetter("send_id")) # type: ignore
|
||||
sorted_proofs = sorted(reserved_proofs, key=itemgetter("send_id"), reverse=True) # type: ignore
|
||||
if number:
|
||||
number += offset
|
||||
for i, (key, value) in islice(
|
||||
@@ -737,7 +755,7 @@ async def pending(ctx: Context, legacy, number: int, offset: int):
|
||||
).strftime("%Y-%m-%d %H:%M:%S")
|
||||
print(
|
||||
f"#{i} Amount:"
|
||||
f" {wallet.unit.str(sum_proofs(grouped_proofs))} Time:"
|
||||
f" {Unit[token_obj.unit].str(sum_proofs(grouped_proofs))} Time:"
|
||||
f" {reserved_date} ID: {key} Mint: {mint}\n"
|
||||
)
|
||||
print(f"{token}\n")
|
||||
|
||||
Reference in New Issue
Block a user