View Issue Details

IDProjectCategoryView StatusLast Update
0010308Talerwallet (Android App)public2025-09-15 13:39
Reportert3sserakt Assigned Toavalos  
PrioritynormalSeveritymajorReproducibilityalways
Status assignedResolutionopen 
Product Version1.0 
Target Version1.1 
Summary0010308: Error configuring exchange
DescriptionEntered https://exchange.taler.datenspuren.de got error (see attachment). App version 1.0.8.
Tagsdatenspuren
Attached Files
Screenshot_20250829-174018.png (206,314 bytes)   
Screenshot_20250829-174018.png (206,314 bytes)   

Activities

Florian Dold

2025-09-01 12:38

manager   ~0025765

That's a UI issue on Android: The UI has to canonicalize the base URL (either by implementing the relevant algorithm or using the helper request from wallet-core) before passing it into other wallet-core requests.

avalos

2025-09-02 18:06

developer   ~0025780

Last edited: 2025-09-05 12:05

Why do we need a separate helper request for this?

i.e. Why can't the request do the canonicalization itself?

MarcS

2025-09-06 07:00

developer   ~0025834

I had exactly the same discussion with Florian 6 weeks ago. This is the only place (in the iOS wallet) where the user enters a URL: Adding an exchange.
In the wallet, we always show the user a prettified URL without a trailing slash, and without a leading scheme. So why do they have to enter any of those here?
In Petit Vivy, we even decided to get rid of the 'exchange' word, and prettify "exchange.demo.taler.net" down to "demo.taler.net" - the word 'exchange' should no longer be used in user-facing UI in the future. Instead we use the term "payment service"...

We already have the general rule, that instead of implementing something 3 times in 3 wallets, we want to implement this once in wallet-core if possible.
So wallet-core should:

1) add the trailing slash itself if it needs it - but accept a trailing slash when the user entered it
2) add the "https://" scheme at the beginning if it is missing - but accept any leading scheme the user provided
3) add the term "exchange." after the scheme, or at the beginning if the user did not provide a scheme and just adding the https scheme doesn't suffice to connect the exchange.

Thus the user could enter e.g. "demo.taler.net" (the most user-friendly variant), "https://demo.taler.net/" (without "exchange.") , or "exchange.demo.taler.net" into the textinput field, and wallet-core should expand this user data where missing to connect to https://exchange.demo.taler.net/.
One implementation, instead of each wallet needing to do this (differently) itself.

Florian Dold

2025-09-08 20:18

manager   ~0025860

And we already have a request that canonicalizes a base URL *without* going to the network: canonicalizeBaseUrl({url: string}).

@Ivan: Please use that before passing data to the request to add an exchange.

@Marc: What you're describing isn't documented yet (=> Vlada!) and IMO needs to be treated differently, because it does *way* more than just canonicalizing the base URL. It tries to guess it and validates guesses via the network. And it's specific to the exchange, while canonicalizeBaseUrl is generic across Taler base URLs. => https://bugs.gnunet.org/view.php?id=10380

avalos

2025-09-10 11:47

developer   ~0025876

> @Ivan: Please use that before passing data to the request to add an exchange.

Again, why can't this be part of the `addExchange` request itself?

Literally, in the only place in the UI where it's used, it requires canonicalization.

MarcS

2025-09-15 11:09

developer   ~0025908

I fully agree with Ivan - wallet-core should implement this *once* instead of all wallets needing to implement it by themselves. And yes, if you need to try several options with multiple network calls, then just do it - the user wants to add this Exchange, that's all what counts.

Florian Dold

2025-09-15 13:39

manager   ~0025912

Alright, I agree that it's sensible as a convenience, so I've added the "allowCompletion: bool" flag to the addExchange request.

I've also implemented the "completeExchangeBaseUrl" request. That is still required for the web extension, which already tries to contact the exchange while the user is typing.

Issue History

Date Modified Username Field Change
2025-08-29 17:49 t3sserakt New Issue
2025-08-29 17:49 t3sserakt File Added: Screenshot_20250829-174018.png
2025-08-31 01:17 Christian Grothoff Assigned To => Florian Dold
2025-08-31 01:17 Christian Grothoff Status new => assigned
2025-08-31 01:17 Christian Grothoff Product Version => 1.0
2025-08-31 01:17 Christian Grothoff Target Version => 1.1
2025-08-31 21:23 Christian Grothoff Tag Attached: datenspuren
2025-09-01 12:38 Florian Dold Note Added: 0025765
2025-09-01 12:38 Florian Dold Assigned To Florian Dold => avalos
2025-09-02 18:06 avalos Note Added: 0025780
2025-09-05 12:05 avalos Assigned To avalos => Florian Dold
2025-09-05 12:05 avalos Status assigned => feedback
2025-09-05 12:05 avalos Note Edited: 0025780
2025-09-06 07:00 MarcS Note Added: 0025834
2025-09-08 20:18 Florian Dold Note Added: 0025860
2025-09-08 20:18 Florian Dold Assigned To Florian Dold => avalos
2025-09-08 20:18 Florian Dold Status feedback => assigned
2025-09-10 11:47 avalos Note Added: 0025876
2025-09-15 11:09 MarcS Note Added: 0025908
2025-09-15 13:39 Florian Dold Note Added: 0025912