commit 1225aa0deda9ea5a00e45fe129ff62d82674ae5a
parent f1daa2460300c3fe1c97ce32efb7b6410702482b
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Wed, 5 Nov 2025 14:20:40 +0100
fix more URI handling; start integration testing
Diffstat:
4 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/packages/taler-util/src/http-client/mailbox.ts b/packages/taler-util/src/http-client/mailbox.ts
@@ -89,7 +89,7 @@ export class TalerMailboxInstanceHttpClient {
| OperationOk<TalerMailboxApi.TalerMailboxConfigResponse>
| OperationFail<HttpStatusCode.NotFound>
>{
- const url = new URL(`config`, this.baseUrl);
+ const url = new URL(`/config`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
diff --git a/packages/taler-util/src/taleruri.ts b/packages/taler-util/src/taleruri.ts
@@ -1064,11 +1064,16 @@ export function parseAddContactUriWithError(s: string) {
const q = new URLSearchParams(lastPart ?? "");
const mailboxIdentity = lastPart.split("?")[0];
const sourceBaseUrl = q.get("sourceBaseUrl") ?? "";
+ const mailboxHostPort = Paytos.parseHostPortPath2(
+ mailboxBaseUri,
+ pathSegments.join("/"),
+ pi.value.innerProto,
+ );
const result: AddContactUri = {
type: TalerUriAction.AddContact,
aliasType: parts[0],
alias: parts[1],
- mailboxBaseUri: [mailboxBaseUri, ...pathSegments].join("/"),
+ mailboxBaseUri: mailboxHostPort!,
mailboxIdentity: mailboxIdentity,
sourceBaseUrl: sourceBaseUrl,
};
diff --git a/packages/taler-wallet-core/src/mailbox.ts b/packages/taler-wallet-core/src/mailbox.ts
@@ -223,8 +223,7 @@ export async function refreshMailbox(
export async function sendTalerUriMessage(
wex: WalletExecutionContext,
req: SendTalerUriMailboxMessageRequest) : Promise<EmptyObject> {
- // FIXME we need to differentiate base URI and account in the contact!!
- const mailboxClient = new TalerMailboxInstanceHttpClient(req.contact.mailboxBaseUri, wex.http);
+ const mailboxClient = new TalerMailboxInstanceHttpClient(req.contact.mailboxBaseUri, wex.http);
// Get message size
var message_size;
const resConf = await mailboxClient.getConfig();
diff --git a/packages/taler-wallet-webextension/src/wallet/Mailbox.tsx b/packages/taler-wallet-webextension/src/wallet/Mailbox.tsx
@@ -64,7 +64,6 @@ export function MailboxPage({
const mailboxBaseUrl = "http://localhost:11000";
var mailboxClient: TalerMailboxInstanceHttpClient;
var activeMailbox: MailboxConfiguration | undefined;
- var h_address: string | undefined;
const httpClient = new BrowserFetchHttpLib();
mailboxClient = new TalerMailboxInstanceHttpClient(mailboxBaseUrl, httpClient);
@@ -75,8 +74,7 @@ export function MailboxPage({
// FIXME put this into the mailbox config directly?
const privKey = decodeCrock(activeMailbox.privateKey);
const pubKey = eddsaGetPublic(privKey);
- h_address = encodeCrock(sha512(pubKey));
- const mailboxUrl = activeMailbox.mailboxBaseUrl + '/' + encodeCrock(pubKey);
+ const mailboxUrl = activeMailbox.mailboxBaseUrl + '/' + encodeCrock(sha512(pubKey));
return {
messages: b.messages,
mailbox: activeMailbox,
@@ -111,17 +109,16 @@ export function MailboxPage({
const onDeleteMessage = async (m: MailboxMessageRecord) => {
api.wallet.call(WalletApiOperation.DeleteMailboxMessage, { message: m }).then();
};
- const onFetchMessages = async () => {
- if (!h_address) {
- return;
- }
+ const onFetchMessages = async (url: string) => {
+ const urlParts = url.split("/");
+ const h_address = urlParts[urlParts.length - 1];
const httpClient = new BrowserFetchHttpLib();
const mailboxClient = new TalerMailboxInstanceHttpClient(mailboxBaseUrl, httpClient);
const messagesResp = await mailboxClient.getMessages({hMailbox: h_address});
+ console.log (messagesResp.type);
if (messagesResp.type != "ok") {
return;
}
- messagesResp.body
state?.retry();
};
return (
@@ -174,7 +171,7 @@ export function MessagesView({
search: TextFieldHandler;
messages: MailboxMessageRecord[];
mailboxUrl: string;
- onFetchMessages: () => Promise<void>;
+ onFetchMessages: (url: string) => Promise<void>;
onDeleteMessage: (m: MailboxMessageRecord) => Promise<void>;
}): VNode {
const { i18n } = useTranslationContext();
@@ -195,7 +192,7 @@ export function MessagesView({
</Button>
</SmallText>
</p>
- <Button variant="contained" color="error" onClick={onFetchMessages}>
+ <Button variant="contained" color="error" onClick={() => { return onFetchMessages(mailboxUrl) }}>
<i18n.Translate>Fetch messages</i18n.Translate>
</Button>
</Centered>