diff --git a/cashu/wallet/api/responses.py b/cashu/wallet/api/responses.py index 931aa56..625a78a 100644 --- a/cashu/wallet/api/responses.py +++ b/cashu/wallet/api/responses.py @@ -74,7 +74,7 @@ class InfoResponse(BaseModel): wallet: str debug: bool cashu_dir: str - mint_url: str + mint_urls: List[str] = [] settings: Optional[str] tor: bool nostr_public_key: Optional[str] = None diff --git a/cashu/wallet/api/router.py b/cashu/wallet/api/router.py index 3a671b6..0b96fa8 100644 --- a/cashu/wallet/api/router.py +++ b/cashu/wallet/api/router.py @@ -14,7 +14,13 @@ from ...core.settings import settings from ...nostr.nostr.client.client import NostrClient from ...tor.tor import TorProxy from ...wallet.crud import get_lightning_invoices, get_reserved_proofs, get_unused_locks -from ...wallet.helpers import deserialize_token_from_string, init_wallet, receive, send +from ...wallet.helpers import ( + deserialize_token_from_string, + init_wallet, + list_mints, + receive, + send, +) from ...wallet.nostr import receive_nostr, send_nostr from ...wallet.wallet import Wallet as Wallet from .api_helpers import verify_mints @@ -427,12 +433,13 @@ async def info(): else: nostr_public_key = None nostr_relays = [] + mint_list = await list_mints(wallet) return InfoResponse( version=settings.version, wallet=wallet.name, debug=settings.debug, cashu_dir=settings.cashu_dir, - mint_url=settings.mint_url, + mint_urls=mint_list, settings=settings.env_file, tor=settings.tor, nostr_public_key=nostr_public_key, diff --git a/cashu/wallet/cli/cli.py b/cashu/wallet/cli/cli.py index 9acf2b2..5dec8f1 100644 --- a/cashu/wallet/cli/cli.py +++ b/cashu/wallet/cli/cli.py @@ -28,7 +28,13 @@ from ...wallet.crud import ( from ...wallet.wallet import Wallet as Wallet from ..api.api_server import start_api_server from ..cli.cli_helpers import get_mint_wallet, print_mint_balances, verify_mint -from ..helpers import deserialize_token_from_string, init_wallet, receive, send +from ..helpers import ( + deserialize_token_from_string, + init_wallet, + list_mints, + receive, + send, +) from ..nostr import receive_nostr, send_nostr @@ -708,26 +714,30 @@ async def info(ctx: Context, mint: bool, mnemonic: bool): print(f"Socks proxy: {settings.socks_proxy}") if settings.http_proxy: print(f"HTTP proxy: {settings.http_proxy}") - print(f"Mint URL: {ctx.obj['HOST']}") + mint_list = await list_mints(wallet) + print(f"Mint URLs: {mint_list}") if mint: - mint_info: dict = (await wallet._load_mint_info()).dict() - print("") - print("Mint information:") - print("") - if mint_info: - print(f"Mint name: {mint_info['name']}") - if mint_info["description"]: - print(f"Description: {mint_info['description']}") - if mint_info["description_long"]: - print(f"Long description: {mint_info['description_long']}") - if mint_info["contact"]: - print(f"Contact: {mint_info['contact']}") - if mint_info["version"]: - print(f"Version: {mint_info['version']}") - if mint_info["motd"]: - print(f"Message of the day: {mint_info['motd']}") - if mint_info["parameter"]: - print(f"Parameter: {mint_info['parameter']}") + for mint_url in mint_list: + wallet.url = mint_url + mint_info: dict = (await wallet._load_mint_info()).dict() + print("") + print("Mint information:") + print("") + print(f"Mint URL: {mint_url}") + if mint_info: + print(f"Mint name: {mint_info['name']}") + if mint_info["description"]: + print(f"Description: {mint_info['description']}") + if mint_info["description_long"]: + print(f"Long description: {mint_info['description_long']}") + if mint_info["contact"]: + print(f"Contact: {mint_info['contact']}") + if mint_info["version"]: + print(f"Version: {mint_info['version']}") + if mint_info["motd"]: + print(f"Message of the day: {mint_info['motd']}") + if mint_info["parameter"]: + print(f"Parameter: {mint_info['parameter']}") if mnemonic: assert wallet.mnemonic diff --git a/cashu/wallet/helpers.py b/cashu/wallet/helpers.py index 302298d..d6a1d28 100644 --- a/cashu/wallet/helpers.py +++ b/cashu/wallet/helpers.py @@ -26,6 +26,15 @@ async def init_wallet(wallet: Wallet, load_proofs: bool = True): await wallet.load_proofs(reload=True) +async def list_mints(wallet: Wallet): + await wallet.load_proofs() + balances = await wallet.balance_per_minturl() + mints = list(balances.keys()) + if wallet.url not in mints: + mints.append(wallet.url) + return mints + + async def redeem_TokenV3_multimint(wallet: Wallet, token: TokenV3): """ Helper function to iterate thruogh a token with multiple mints and redeem them from