dedis / popstellar

Proof-of-personhood System
GNU Affero General Public License v3.0
35 stars 8 forks source link

[BUG] RollCall Token Unavailable while RollCall Re-Opens #1924

Open Kaz-ookid opened 2 months ago

Kaz-ookid commented 2 months ago

Description

When the latest RollCall is re-opened, FE2 client considers the user to have no available token anymore, until the RollCall is closed again. This means we cannot send Chirps, use DigitalCash or see our Token in Tokens tab, until this RC is closed again?

Expected behavior

If we received a Token from a finished RollCall, this Token should remain valid even if the RC re-opens afterwards.

How to reproduce

  1. Create a LAO, Join it with another device, create a RollCall, Scan your second device and close the RollCall
  2. Use the second device and see that the token is valid (send chirps, check Tokens tab)
  3. On first device (organizer), re-open the RollCall
  4. See, for example, error toast in Chirps feed, and the fact that you cannot send Chirps anymore.
Front-ends:
Back-ends:

Impact

Large user experience and availability impact. If a RollCall is re-opened, you are denied of your actions as a fair user that participated in a RollCall

Possible root cause

https://github.com/dedis/popstellar/blob/e47fa9acd0045b71e4db8057dbaee4aac6025011/fe2-android/app/src/main/java/com/github/dedis/popstellar/ui/lao/digitalcash/DigitalCashViewModel.kt#L252-L253 All fragments/viewmodels are retrieving PoP Token this way. Maybe investigate why getLastClosedRollCall() function does not take into account a previously closed but re-opened RollCall.

A very quick check shows that it only returns roll calls which state is CLOSED. This statement is not sufficient to infer the presence of a valid PoP Token, as described in this Issue.