dedis/popstellar

[BUG] RollCall Token Unavailable while RollCall Re-Opens

Kaz-ookid opened this issue · 0 comments

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:
  • Fe1-Web (please include browser's names & version)
  • Fe2-Android (please specify if phone or emulation, and Android version)
  • Not applicable
Back-ends:
  • Be1-Go
  • Be2-Scala
  • Not applicable

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

val validToken: PoPToken
get() = keyManager.getValidPoPToken(laoId!!, rollCallRepo.getLastClosedRollCall(laoId!!))

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.