View Issue Details

IDProjectCategoryView StatusLast Update
0008552Talerwallet (Android App)public2024-04-15 19:32
ReporterFlorian Dold Assigned Toavalos Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PriorityurgentSeverityminorReproducibilityhave not tried
Status closedResolutionreopened 
Product Versiongit (master) 
Target Version0.10Fixed in Version0.10 
Summary0008552: Android wallet does not render peer-push-debit transaction in state pending(refresh-expired) correctly
DescriptionError message is:

Error: net.taler.wallet.transactions.TransactionMinorState does not contain element with name "refresh-expired".

In general, the wallet UI should probably be more lenient about minor states it doesn't know.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

avalos

2024-03-01 03:55

developer   ~0021593

I don't think it's relevant for the UI to handle unknown major/minor states better, as they're part of wallet-core and thus the wallet is expected to always implement all of the states of a given wallet-core version. Those breaking changes should always be reported. In this case, I didn't know that there was a new `refresh-expired` state.

How should I render this state?

Florian Dold

2024-03-04 16:05

manager   ~0021645

There should be some default logic for unknown minor states. The minor state `refresh-expired` isn't new, it's just something that doesn't occur very often.

For new major states, I agree that we should bump the protocol version in that case.

avalos

2024-03-05 16:18

developer   ~0021687

I don't remember `refresh-expired` being anywhere when I first implemented DD37, so it must be new even if it's not recent. I just added `refresh-expired` to the enum, and with that the app should cover all current major/minor states currently present in wallet-core.

Florian Dold

2024-03-05 20:44

manager   ~0021696

Ah, but this is about the app not exploding when there's a new minor state. Could we at least allow the default actions and show the state name?

avalos

2024-03-07 16:59

developer   ~0021764

I think that both new minor and major states should always be reported. Since the initial DD37 implementation, there has only been one new minor state introduced in wallet-core, so I don't see a reason to worry that much about the wallet breaking with new minor states, as long as they are reported properly.

avalos

2024-03-07 17:04

developer   ~0021766

Also, the app doesn't decide which actions to allow, that's on wallet-core. The state name is never shown, should I implement that as a developer feature? It would be nice to show the full JSON, but that should be a separate ticket.

grote

2024-03-13 17:58

reporter   ~0021899

The issue has been resolved in https://git.taler.net/taler-android.git/commit/?id=917a0175af8493b893486c0b6b2a001ce1b952c6

> this is about the app not exploding when there's a new minor state.

Note that Android already has a custom TransactionListSerializer (that I am also not a big fan of), because wallet-core kept breaking the API and there was the desire to still render transactions unknown to Android. Because of this, the app should not have exploded, but shown the transaction as unknown.

grote

2024-03-13 18:04

reporter   ~0021900

What would help preventing such issues in the future is properly announcing breaking changes to the API and to expose all possible states to wallet-core users for testing e.g. through the integration test. Then, we cold press one button and check the UI for any breakage after updating a new wallet-core version.

avalos

2024-03-21 17:23

developer   ~0021964

I will close this issue already. The crash has been fixed already. The question of whether unknown minor states should crash the app or not, remains open, but I think that we should discuss this separately.

Issue History

Date ModifiedUsernameFieldChange
2024-02-29 23:25Florian DoldNew Issue
2024-02-29 23:25Florian DoldStatusnew => assigned
2024-02-29 23:25Florian DoldAssigned To => avalos
2024-03-01 03:55avalosNote Added: 0021593
2024-03-04 15:17avalosAssigned Toavalos => Florian Dold
2024-03-04 15:17avalosStatusassigned => feedback
2024-03-04 16:05Florian DoldNote Added: 0021645
2024-03-04 16:05Florian DoldStatusfeedback => informing
2024-03-04 16:05Florian DoldResolutionopen => fixed
2024-03-05 15:50avalosAssigned ToFlorian Dold => avalos
2024-03-05 15:50avalosStatusinforming => feedback
2024-03-05 15:50avalosResolutionfixed => reopened
2024-03-05 15:51avalosAssigned Toavalos => Florian Dold
2024-03-05 15:51avalosAssigned ToFlorian Dold => avalos
2024-03-05 16:18avalosNote Added: 0021687
2024-03-05 20:12Florian DoldStatusfeedback => assigned
2024-03-05 20:44Florian DoldNote Added: 0021696
2024-03-07 16:59avalosNote Added: 0021764
2024-03-07 17:04avalosNote Added: 0021766
2024-03-07 19:41Christian GrothoffPrioritynormal => urgent
2024-03-07 19:41Christian GrothoffProduct Version => git (master)
2024-03-07 19:41Christian GrothoffTarget Version0.9.4 => 0.10
2024-03-13 17:58groteNote Added: 0021899
2024-03-13 18:04groteNote Added: 0021900
2024-03-21 17:23avalosStatusassigned => informing
2024-03-21 17:23avalosNote Added: 0021964
2024-04-09 11:11Christian GrothoffFixed in Version => 0.10
2024-04-15 19:32Christian GrothoffStatusinforming => closed