restore.rs 859 B

1234567891011121314151617181920212223242526272829303132333435
  1. use anyhow::Result;
  2. use cdk::mint_url::MintUrl;
  3. use cdk::wallet::MultiMintWallet;
  4. use clap::Args;
  5. #[derive(Args)]
  6. pub struct RestoreSubCommand {
  7. /// Mint Url
  8. mint_url: MintUrl,
  9. }
  10. pub async fn restore(
  11. multi_mint_wallet: &MultiMintWallet,
  12. sub_command_args: &RestoreSubCommand,
  13. ) -> Result<()> {
  14. let mint_url = sub_command_args.mint_url.clone();
  15. let wallet = match multi_mint_wallet.get_wallet(&mint_url).await {
  16. Some(wallet) => wallet.clone(),
  17. None => {
  18. multi_mint_wallet.add_mint(mint_url.clone(), None).await?;
  19. multi_mint_wallet
  20. .get_wallet(&mint_url)
  21. .await
  22. .expect("Wallet should exist after adding mint")
  23. .clone()
  24. }
  25. };
  26. let amount = wallet.restore().await?;
  27. println!("Restored {amount}");
  28. Ok(())
  29. }