diff options
author | Florian Dold <florian@dold.me> | 2024-05-16 00:17:03 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-05-16 00:17:06 +0200 |
commit | 0dc3e3a2affd71f33e9fbe9c19ca8dd6c3589e15 (patch) | |
tree | 4edab219bfb8326e39d4aa3d195b77f3eb5c27c5 /packages/taler-wallet-cli | |
parent | 80a6a2f29bd1b43fd1ca14aeb3fa34e823b0e38a (diff) | |
download | wallet-core-0dc3e3a2affd71f33e9fbe9c19ca8dd6c3589e15.tar.xz |
wallet-core: for most CLI commands, start task loop lazily
We don't want potential network activity when we just check the status
of transactions, look at the balance, etc.
Diffstat (limited to 'packages/taler-wallet-cli')
-rw-r--r-- | packages/taler-wallet-cli/src/index.ts | 257 |
1 files changed, 152 insertions, 105 deletions
diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts index b915de538..a55b6bd32 100644 --- a/packages/taler-wallet-cli/src/index.ts +++ b/packages/taler-wallet-cli/src/index.ts @@ -252,8 +252,8 @@ interface CreateWalletResult { async function createLocalWallet( walletCliArgs: WalletCliArgsType, + args: WalletRunArgs, notificationHandler?: (n: WalletNotification) => void, - noInit?: boolean, ): Promise<CreateWalletResult> { const dbPath = walletCliArgs.wallet.walletDbFile ?? defaultWalletDbPath; const myHttpLib = createPlatformHttpLib({ @@ -275,23 +275,29 @@ async function createLocalWallet( applyVerbose(walletCliArgs.wallet.verbose); const res = { wallet: wh.wallet, getStats: wh.getDbStats }; - if (noInit) { + if (args.noInit) { return res; } try { - await wh.wallet.handleCoreApiRequest("initWallet", "native-init", { - config: { - features: {}, - testing: { - devModeActive: checkEnvFlag("TALER_WALLET_DEV_MODE"), - denomselAllowLate: checkEnvFlag( - "TALER_WALLET_DEBUG_DENOMSEL_ALLOW_LATE", - ), - emitObservabilityEvents: observabilityEventFile != null, - skipDefaults: walletCliArgs.wallet.skipDefaults, + await wh.wallet.handleCoreApiRequest( + WalletApiOperation.InitWallet, + "native-init", + { + config: { + features: { + lazyTaskLoop: args.lazyTaskLoop, + }, + testing: { + devModeActive: checkEnvFlag("TALER_WALLET_DEV_MODE"), + denomselAllowLate: checkEnvFlag( + "TALER_WALLET_DEBUG_DENOMSEL_ALLOW_LATE", + ), + emitObservabilityEvents: observabilityEventFile != null, + skipDefaults: walletCliArgs.wallet.skipDefaults, + }, }, }, - }); + ); return res; } catch (e) { const ed = getErrorDetailFromException(e); @@ -312,8 +318,14 @@ function writeObservabilityLog(notif: WalletNotification): void { } } +export interface WalletRunArgs { + lazyTaskLoop?: boolean; + noInit?: boolean; +} + async function withWallet<T>( walletCliArgs: WalletCliArgsType, + args: WalletRunArgs = {}, f: (ctx: WalletContext) => Promise<T>, ): Promise<T> { const waiter = makeNotificationWaiter(); @@ -341,7 +353,7 @@ async function withWallet<T>( w.close(); return res; } else { - const wh = await createLocalWallet(walletCliArgs, onNotif); + const wh = await createLocalWallet(walletCliArgs, args, onNotif); const ctx: WalletContext = { client: wh.wallet.client, waitForNotificationCond: waiter.waitForNotificationCond, @@ -365,13 +377,19 @@ walletCli help: "Show raw JSON.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { - const balance = await wallet.client.call( - WalletApiOperation.GetBalances, - {}, - ); - console.log(JSON.stringify(balance, undefined, 2)); - }); + await withWallet( + args, + { + lazyTaskLoop: true, + }, + async (wallet) => { + const balance = await wallet.client.call( + WalletApiOperation.GetBalances, + {}, + ); + console.log(JSON.stringify(balance, undefined, 2)); + }, + ); }); walletCli @@ -382,7 +400,7 @@ walletCli help: "Exit with non-zero status code when request fails instead of returning error JSON.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, {}, async (wallet) => { let requestJson; logger.info(`handling 'api' request (${args.api.operation})`); const jsonContent = args.api.request.startsWith("@") @@ -425,18 +443,24 @@ const transactionsCli = walletCli // Default action transactionsCli.action(async (args) => { - await withWallet(args, async (wallet) => { - const pending = await wallet.client.call( - WalletApiOperation.GetTransactions, - { - currency: args.transactions.currency, - search: args.transactions.search, - includeRefreshes: args.transactions.includeRefreshes, - sort: "stable-ascending", - }, - ); - console.log(JSON.stringify(pending, undefined, 2)); - }); + await withWallet( + args, + { + lazyTaskLoop: true, + }, + async (wallet) => { + const pending = await wallet.client.call( + WalletApiOperation.GetTransactions, + { + currency: args.transactions.currency, + search: args.transactions.search, + includeRefreshes: args.transactions.includeRefreshes, + sort: "stable-ascending", + }, + ); + console.log(JSON.stringify(pending, undefined, 2)); + }, + ); }); transactionsCli @@ -447,11 +471,18 @@ transactionsCli help: "Identifier of the transaction to delete", }) .action(async (args) => { - await withWallet(args, async (wallet) => { - await wallet.client.call(WalletApiOperation.DeleteTransaction, { - transactionId: args.deleteTransaction.transactionId as TransactionIdStr, - }); - }); + await withWallet( + args, + { + lazyTaskLoop: true, + }, + async (wallet) => { + await wallet.client.call(WalletApiOperation.DeleteTransaction, { + transactionId: args.deleteTransaction + .transactionId as TransactionIdStr, + }); + }, + ); }); transactionsCli @@ -462,12 +493,18 @@ transactionsCli help: "Identifier of the transaction to suspend.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { - await wallet.client.call(WalletApiOperation.SuspendTransaction, { - transactionId: args.suspendTransaction - .transactionId as TransactionIdStr, - }); - }); + await withWallet( + args, + { + lazyTaskLoop: true, + }, + async (wallet) => { + await wallet.client.call(WalletApiOperation.SuspendTransaction, { + transactionId: args.suspendTransaction + .transactionId as TransactionIdStr, + }); + }, + ); }); transactionsCli @@ -478,11 +515,17 @@ transactionsCli help: "Identifier of the transaction to fail.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { - await wallet.client.call(WalletApiOperation.FailTransaction, { - transactionId: args.fail.transactionId as TransactionIdStr, - }); - }); + await withWallet( + args, + { + lazyTaskLoop: true, + }, + async (wallet) => { + await wallet.client.call(WalletApiOperation.FailTransaction, { + transactionId: args.fail.transactionId as TransactionIdStr, + }); + }, + ); }); transactionsCli @@ -493,7 +536,7 @@ transactionsCli help: "Identifier of the transaction to suspend.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.ResumeTransaction, { transactionId: args.resumeTransaction.transactionId as TransactionIdStr, }); @@ -508,7 +551,7 @@ transactionsCli help: "Identifier of the transaction to delete", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const tx = await wallet.client.call( WalletApiOperation.GetTransactionById, { @@ -527,7 +570,7 @@ transactionsCli help: "Identifier of the transaction to delete", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.AbortTransaction, { transactionId: args.abortTransaction.transactionId as TransactionIdStr, }); @@ -539,7 +582,7 @@ walletCli help: "Show version details.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const versionInfo = await wallet.client.call( WalletApiOperation.GetVersion, {}, @@ -554,7 +597,7 @@ transactionsCli }) .requiredArgument("transactionId", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.RetryTransaction, { transactionId: args.retryTransaction.transactionId as TransactionIdStr, }); @@ -566,7 +609,7 @@ walletCli help: "Run until no more work is left.", }) .action(async (args) => { - await withWallet(args, async (ctx) => { + await withWallet(args, { lazyTaskLoop: false }, async (ctx) => { await ctx.client.call(WalletApiOperation.TestingWaitTasksDone, {}); }); }); @@ -583,7 +626,7 @@ withdrawCli const uri = args.withdrawCheckUri.uri; const restrictAge = args.withdrawCheckUri.restrictAge; console.log(`age restriction requested (${restrictAge})`); - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const withdrawInfo = await wallet.client.call( WalletApiOperation.GetWithdrawalDetailsForUri, { @@ -603,7 +646,7 @@ withdrawCli .action(async (args) => { const restrictAge = args.withdrawCheckAmount.restrictAge; console.log(`age restriction requested (${restrictAge})`); - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const withdrawInfo = await wallet.client.call( WalletApiOperation.GetWithdrawalDetailsForAmount, { @@ -625,7 +668,7 @@ withdrawCli const uri = args.withdrawAcceptUri.uri; const restrictAge = args.withdrawAcceptUri.restrictAge; console.log(`age restriction requested (${restrictAge})`); - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const res = await wallet.client.call( WalletApiOperation.AcceptBankIntegratedWithdrawal, { @@ -649,7 +692,7 @@ walletCli .maybeOption("restrictAge", ["--restrict-age"], clk.INT) .flag("autoYes", ["-y", "--yes"]) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { let uri; if (args.handleUri.uri) { uri = args.handleUri.uri; @@ -727,7 +770,7 @@ withdrawCli .maybeOption("forcedReservePriv", ["--forced-reserve-priv"], clk.STRING, {}) .maybeOption("restrictAge", ["--restrict-age"], clk.INT) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const exchangeBaseUrl = args.withdrawManually.exchange; const amount = args.withdrawManually.amount; const d = await wallet.client.call( @@ -771,7 +814,7 @@ exchangesCli }) .action(async (args) => { console.log("Listing exchanges ..."); - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const exchanges = await wallet.client.call( WalletApiOperation.ListExchanges, {}, @@ -789,7 +832,7 @@ exchangesCli }) .flag("force", ["-f", "--force"]) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.UpdateExchangeEntry, { exchangeBaseUrl: args.exchangesUpdateCmd.url, force: args.exchangesUpdateCmd.force, @@ -805,7 +848,7 @@ exchangesCli help: "Base URL of the exchange.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.GetExchangeDetailedInfo, { @@ -824,7 +867,7 @@ exchangesCli help: "Base URL of the exchange.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.AddExchange, { exchangeBaseUrl: args.exchangesAddCmd.url, }); @@ -840,7 +883,7 @@ exchangesCli }) .flag("purge", ["--purge"]) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.DeleteExchange, { exchangeBaseUrl: args.exchangesAddCmd.url, purge: args.exchangesAddCmd.purge, @@ -856,7 +899,7 @@ exchangesCli help: "Base URL of the exchange.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.SetExchangeTosAccepted, { exchangeBaseUrl: args.exchangesAcceptTosCmd.url, }); @@ -879,7 +922,7 @@ exchangesCli .map((x) => x.trim()); acceptedFormat = split; } - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const tosResult = await wallet.client.call( WalletApiOperation.GetExchangeTos, { @@ -896,14 +939,14 @@ const backupCli = walletCli.subcommand("backupArgs", "backup", { }); backupCli.subcommand("exportDb", "export-db").action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const backup = await wallet.client.call(WalletApiOperation.ExportDb, {}); console.log(JSON.stringify(backup, undefined, 2)); }); }); backupCli.subcommand("storeBackup", "store").action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.CreateStoredBackup, {}, @@ -913,7 +956,7 @@ backupCli.subcommand("storeBackup", "store").action(async (args) => { }); backupCli.subcommand("storeBackup", "list-stored").action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.ListStoredBackups, {}, @@ -926,7 +969,7 @@ backupCli .subcommand("storeBackup", "delete-stored") .requiredArgument("name", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.DeleteStoredBackup, { @@ -941,7 +984,7 @@ backupCli .subcommand("recoverBackup", "recover-stored") .requiredArgument("name", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.RecoverStoredBackup, { @@ -953,7 +996,7 @@ backupCli }); backupCli.subcommand("importDb", "import-db").action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const dumpRaw = await read(process.stdin); const dump = JSON.parse(dumpRaw); await wallet.client.call(WalletApiOperation.ImportDb, { @@ -971,7 +1014,7 @@ depositCli .requiredArgument("amount", clk.AMOUNT) .requiredArgument("targetPayto", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.CreateDepositGroup, { @@ -995,7 +1038,7 @@ peerCli help: "Amount to pay", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.CheckPeerPushDebit, { @@ -1014,7 +1057,7 @@ peerCli help: "Amount to request", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.CheckPeerPullCredit, { @@ -1029,7 +1072,7 @@ peerCli .subcommand("prepareIncomingPayPull", "prepare-pull-debit") .requiredArgument("talerUri", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.PreparePeerPullDebit, { @@ -1044,7 +1087,7 @@ peerCli .subcommand("confirmIncomingPayPull", "confirm-pull-debit") .requiredArgument("transactionId", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.ConfirmPeerPullDebit, { @@ -1060,7 +1103,7 @@ peerCli .subcommand("confirmIncomingPayPush", "confirm-push-credit") .requiredArgument("transactionId", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.ConfirmPeerPushCredit, { @@ -1098,7 +1141,7 @@ peerCli ); } - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.InitiatePeerPullCredit, { @@ -1118,7 +1161,7 @@ peerCli .subcommand("preparePushCredit", "prepare-push-credit") .requiredArgument("talerUri", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.PreparePeerPushCredit, { @@ -1155,7 +1198,7 @@ peerCli ); } - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const resp = await wallet.client.call( WalletApiOperation.InitiatePeerPushDebit, { @@ -1193,7 +1236,7 @@ advancedCli help: "Show active wallet-core tasks.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const tasks = await wallet.client.call( WalletApiOperation.GetActiveTasks, {}, @@ -1244,7 +1287,11 @@ advancedCli const onNotif = (notif: WalletNotification) => { writeObservabilityLog(notif); }; - const wh = await createLocalWallet(args, onNotif, args.serve.noInit); + const wh = await createLocalWallet( + args, + { lazyTaskLoop: false, noInit: args.serve.noInit }, + onNotif, + ); const w = wh.wallet; let nextClientId = 1; const notifyHandlers = new Map<number, (n: WalletNotification) => void>(); @@ -1293,7 +1340,7 @@ advancedCli help: "Initialize the wallet (with DB) and exit.", }) .action(async (args) => { - await withWallet(args, async () => {}); + await withWallet(args, { lazyTaskLoop: true }, async () => {}); }); advancedCli @@ -1309,7 +1356,7 @@ advancedCli advancedCli .subcommand("pending", "pending", { help: "Show pending operations." }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const pending = await wallet.client.call( WalletApiOperation.GetPendingOperations, {}, @@ -1360,7 +1407,7 @@ currenciesCli help: "List global-currency auditors.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const currencies = await wallet.client.call( WalletApiOperation.ListGlobalCurrencyAuditors, {}, @@ -1374,7 +1421,7 @@ currenciesCli help: "List global-currency exchanges.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const currencies = await wallet.client.call( WalletApiOperation.ListGlobalCurrencyExchanges, {}, @@ -1391,7 +1438,7 @@ currenciesCli .requiredOption("exchangeBaseUrl", ["--url"], clk.STRING) .requiredOption("exchangePub", ["--pub"], clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const currencies = await wallet.client.call( WalletApiOperation.AddGlobalCurrencyExchange, { @@ -1412,7 +1459,7 @@ currenciesCli .requiredOption("exchangeBaseUrl", ["--url"], clk.STRING) .requiredOption("exchangePub", ["--pub"], clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const currencies = await wallet.client.call( WalletApiOperation.RemoveGlobalCurrencyExchange, { @@ -1433,7 +1480,7 @@ currenciesCli .requiredOption("auditorBaseUrl", ["--url"], clk.STRING) .requiredOption("auditorPub", ["--pub"], clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const currencies = await wallet.client.call( WalletApiOperation.AddGlobalCurrencyAuditor, { @@ -1454,7 +1501,7 @@ currenciesCli .requiredOption("auditorBaseUrl", ["--url"], clk.STRING) .requiredOption("auditorPub", ["--pub"], clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const currencies = await wallet.client.call( WalletApiOperation.RemoveGlobalCurrencyAuditor, { @@ -1472,7 +1519,7 @@ advancedCli help: "Clear the database, irrevocable deleting all data in the wallet.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.ClearDb, {}); }); }); @@ -1482,7 +1529,7 @@ advancedCli help: "Export, clear and re-import the database via the backup mechanism.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.Recycle, {}); }); }); @@ -1493,7 +1540,7 @@ advancedCli }) .requiredArgument("url", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const res = await wallet.client.call( WalletApiOperation.PreparePayForUri, { @@ -1526,7 +1573,7 @@ advancedCli }) .requiredArgument("transactionId", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.StartRefundQuery, { transactionId: args.queryRefund.transactionId as TransactionIdStr, }); @@ -1540,7 +1587,7 @@ advancedCli .requiredArgument("proposalId", clk.STRING) .maybeOption("sessionIdOverride", ["--session-id"], clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.ConfirmPay, { proposalId: args.payConfirm.proposalId, sessionId: args.payConfirm.sessionIdOverride, @@ -1554,7 +1601,7 @@ advancedCli }) .requiredArgument("coinPub", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.ForceRefresh, { refreshCoinSpecs: [ { @@ -1570,7 +1617,7 @@ advancedCli help: "Dump coins in an easy-to-process format.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const coinDump = await wallet.client.call( WalletApiOperation.DumpCoins, {}, @@ -1587,7 +1634,7 @@ advancedCli }) .requiredArgument("coinPubSpec", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { let coinPubList: string[]; try { coinPubList = coinPubListCodec.decode( @@ -1612,7 +1659,7 @@ advancedCli }) .requiredArgument("coinPubSpec", clk.STRING) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { let coinPubList: string[]; try { coinPubList = coinPubListCodec.decode( @@ -1636,7 +1683,7 @@ advancedCli help: "List coins.", }) .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { const coins = await wallet.client.call(WalletApiOperation.DumpCoins, {}); for (const coin of coins.coins) { console.log(`coin ${coin.coin_pub}`); @@ -1654,13 +1701,13 @@ const testCli = walletCli.subcommand("testingArgs", "testing", { testCli .subcommand("withdrawTestkudos", "withdraw-testkudos") .action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.WithdrawTestkudos, {}); }); }); testCli.subcommand("withdrawKudos", "withdraw-kudos").action(async (args) => { - await withWallet(args, async (wallet) => { + await withWallet(args, { lazyTaskLoop: true }, async (wallet) => { await wallet.client.call(WalletApiOperation.WithdrawTestBalance, { amount: "KUDOS:50" as AmountString, corebankApiBaseUrl: "https://bank.demo.taler.net/", |