taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 3e21c80180f9eb2ad6b4070db6354d46a7f19dfb
parent 4666bbfcbd2ec98e67d8aa8f2ce69b1237c74251
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Tue, 14 Jul 2026 18:42:46 +0200

mailbox/taldir: Fix incorrect contracts

Diffstat:
Mpackages/taler-util/src/types-taler-wallet.ts | 14++++++++++++++
Mpackages/taler-wallet-core/src/mailbox.ts | 14+++++++++-----
Mpackages/taler-wallet-core/src/wallet-api-types.ts | 8+++++---
Mpackages/taler-wallet-core/src/wallet.ts | 6+++---
4 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts @@ -1417,6 +1417,20 @@ export interface ContactListResponse { contacts: ContactEntry[]; } +export interface GetMailboxResponse { + mailboxConfiguration?: MailboxConfiguration; +} + + +export interface MailboxBaseUrl { + mailboxBaseUrl: string; +} + +export const codecForMailboxBaseUrl = (): Codec<MailboxBaseUrl> => + buildCodecForObject<MailboxBaseUrl>() + .property("mailboxBaseUrl", codecForString()) + .build("MailboxBaseUrl"); + export interface MailboxConfiguration { mailboxBaseUrl: string; privateKey: EddsaPrivateKeyString; diff --git a/packages/taler-wallet-core/src/mailbox.ts b/packages/taler-wallet-core/src/mailbox.ts @@ -26,8 +26,10 @@ import { DeleteMailboxMessageRequest, Duration, EmptyObject, + GetMailboxResponse, HttpStatusCode, Logger, + MailboxBaseUrl, MailboxConfiguration, MailboxMessageRecord, MailboxMessagesResponse, @@ -175,10 +177,12 @@ export async function registerMailbox( */ export async function getMailbox( wex: WalletExecutionContext, - mailboxBaseUrl: string, -): Promise<MailboxConfiguration | undefined> { + mailboxBaseUrl: MailboxBaseUrl, +): Promise<GetMailboxResponse> { return await wex.runLegacyWalletDbTx(async (tx) => { - return await tx.mailboxConfigurations.get(mailboxBaseUrl); + return { + mailboxConfiguration: await tx.mailboxConfigurations.get(mailboxBaseUrl.mailboxBaseUrl), + } }); } @@ -188,7 +192,7 @@ export async function getMailbox( */ export async function createNewMailbox( wex: WalletExecutionContext, - mailboxBaseUrl: string, + mailboxBaseUrl: MailboxBaseUrl, ): Promise<MailboxConfiguration> { const keys = createEddsaKeyPair(); const hpkeKey = encodeCrock(hpkeCreateSecretKey()); @@ -201,7 +205,7 @@ export async function createNewMailbox( }), ); const mailboxConf: MailboxConfiguration = { - mailboxBaseUrl: mailboxBaseUrl, + mailboxBaseUrl: mailboxBaseUrl.mailboxBaseUrl, privateKey: privKey, privateEncryptionKey: hpkeKey, hAddress: hAddress, diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts @@ -112,6 +112,7 @@ import { GetExchangeResourcesResponse, GetExchangeTosRequest, GetExchangeTosResult, + GetMailboxResponse, GetMaxDepositAmountRequest, GetMaxDepositAmountResponse, GetMaxPeerPushDebitAmountRequest, @@ -148,6 +149,7 @@ import { MailboxConfiguration, MailboxMessageRecord, MailboxMessagesResponse, + MailboxBaseUrl, PrepareBankIntegratedWithdrawalRequest, PrepareBankIntegratedWithdrawalResponse, PreparePayRequest, @@ -558,7 +560,7 @@ export type RefreshMailboxOp = { */ export type InitializeMailboxOp = { op: WalletApiOperation.InitializeMailbox; - request: string; + request: MailboxBaseUrl; response: MailboxConfiguration; }; @@ -567,8 +569,8 @@ export type InitializeMailboxOp = { */ export type GetMailboxOp = { op: WalletApiOperation.GetMailbox; - request: string; - response: MailboxConfiguration | undefined; + request: MailboxBaseUrl; + response: GetMailboxResponse; }; /** diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts @@ -259,7 +259,7 @@ import { codecForSharePaymentRequest, codecForStartExchangeWalletKycRequest, codecForStartRefundQueryRequest, - codecForString, + codecForMailboxBaseUrl, codecForSuspendTransaction, codecForTestPayArgs, codecForTestingCorruptWithdrawalCoinSelRequest, @@ -2290,11 +2290,11 @@ const handlers: { [T in WalletApiOperation]: HandlerWithValidator<T> } = { handler: listContacts, }, [WalletApiOperation.InitializeMailbox]: { - codec: codecForString(), + codec: codecForMailboxBaseUrl(), handler: createNewMailbox, }, [WalletApiOperation.GetMailbox]: { - codec: codecForString(), + codec: codecForMailboxBaseUrl(), handler: getMailbox, }, [WalletApiOperation.SendTalerUriMailboxMessage]: {