Every NFC scan begins with getting device info and SCP keys. If any of these operations fails, we cannot continue any (possibly pending) action.
For better user experience, if the failure is an IOException (such as TagLost), the current information of the OATH/FIDO sessions will be preserved so that the action can be retried.
The failure also causes following:
the NFC Overlay will be closed with a failure
any pending action will be failed with CancellationException
In flutter we have to handle Cancellations by ignoring it, to avoid popping of the navigator stack - this PR adds fixes to places where this was missing.
Every NFC scan begins with getting device info and SCP keys. If any of these operations fails, we cannot continue any (possibly pending) action.
For better user experience, if the failure is an IOException (such as TagLost), the current information of the OATH/FIDO sessions will be preserved so that the action can be retried.
The failure also causes following:
In flutter we have to handle Cancellations by ignoring it, to avoid popping of the navigator stack - this PR adds fixes to places where this was missing.