From bd3e9cb67cfd40227807e661dd276b6070a452c4 Mon Sep 17 00:00:00 2001 From: Sale Djenic Date: Mon, 22 Jan 2024 10:29:11 +0100 Subject: [PATCH] fix(keycard): unable to re-run keycard flow on windows The issue re-running keycard flows on Windows is fixed in this commit, cause a different signal was emitted on windows in case of missing Keycard. --- .../internal/state_factory_state_implementation.nim | 8 +++++--- .../internal/state_factory_login_implementation.nim | 11 ++++++----- .../state_factory_onboarding_implementation.nim | 11 ++++++----- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/app/modules/shared_modules/keycard_popup/internal/state_factory_state_implementation.nim b/src/app/modules/shared_modules/keycard_popup/internal/state_factory_state_implementation.nim index 4270c44002..d1da9e4b2d 100644 --- a/src/app/modules/shared_modules/keycard_popup/internal/state_factory_state_implementation.nim +++ b/src/app/modules/shared_modules/keycard_popup/internal/state_factory_state_implementation.nim @@ -21,7 +21,8 @@ proc ensureReaderAndCardPresence*(state: State, keycardFlowType: string, keycard state.flowType == FlowType.MigrateFromAppToKeycard: if keycardFlowType == ResponseTypeValueKeycardFlowResult and keycardEvent.error.len > 0 and - keycardEvent.error == ErrorNoReader: + (keycardEvent.error == ErrorNoReader or + keycardEvent.error == ErrorReaderList): controller.reRunCurrentFlowLater() if state.stateType == StateType.PluginReader: return nil @@ -41,8 +42,9 @@ proc ensureReaderAndCardPresence*(state: State, keycardFlowType: string, keycard if state.flowType == FlowType.SetupNewKeycard: if keycardFlowType == ResponseTypeValueKeycardFlowResult and keycardEvent.error.len > 0 and - keycardEvent.error == ErrorConnection or - keycardEvent.error == ErrorNoReader: + (keycardEvent.error == ErrorConnection or + keycardEvent.error == ErrorNoReader or + keycardEvent.error == ErrorReaderList): controller.reRunCurrentFlowLater() if state.stateType == StateType.PluginReader: return nil diff --git a/src/app/modules/startup/internal/state_factory_login_implementation.nim b/src/app/modules/startup/internal/state_factory_login_implementation.nim index 17a198f0fc..34e0644013 100644 --- a/src/app/modules/startup/internal/state_factory_login_implementation.nim +++ b/src/app/modules/startup/internal/state_factory_login_implementation.nim @@ -3,11 +3,12 @@ proc ensureReaderAndCardPresenceLogin*(state: State, keycardFlowType: string, ke keycardEvent.error.len > 0: if keycardEvent.error == ErrorPCSC: return createState(StateType.LoginNoPCSCService, state.flowType, nil) - if keycardEvent.error == ErrorNoReader: - controller.reRunCurrentFlowLater() - if state.stateType == StateType.LoginPlugin: - return nil - return createState(StateType.LoginPlugin, state.flowType, nil) + if keycardEvent.error == ErrorNoReader or + keycardEvent.error == ErrorReaderList: + controller.reRunCurrentFlowLater() + if state.stateType == StateType.LoginPlugin: + return nil + return createState(StateType.LoginPlugin, state.flowType, nil) if keycardFlowType == ResponseTypeValueInsertCard and keycardEvent.error.len > 0 and keycardEvent.error == ErrorConnection: diff --git a/src/app/modules/startup/internal/state_factory_onboarding_implementation.nim b/src/app/modules/startup/internal/state_factory_onboarding_implementation.nim index 3cd8118592..7b873af050 100644 --- a/src/app/modules/startup/internal/state_factory_onboarding_implementation.nim +++ b/src/app/modules/startup/internal/state_factory_onboarding_implementation.nim @@ -4,11 +4,12 @@ proc ensureReaderAndCardPresenceOnboarding*(state: State, keycardFlowType: strin keycardEvent.error.len > 0: if keycardEvent.error == ErrorPCSC: return createState(StateType.KeycardNoPCSCService, state.flowType, backState) - if keycardEvent.error == ErrorNoReader: - controller.reRunCurrentFlowLater() - if state.stateType == StateType.KeycardPluginReader: - return nil - return createState(StateType.KeycardPluginReader, state.flowType, backState) + if keycardEvent.error == ErrorNoReader or + keycardEvent.error == ErrorReaderList: + controller.reRunCurrentFlowLater() + if state.stateType == StateType.KeycardPluginReader: + return nil + return createState(StateType.KeycardPluginReader, state.flowType, backState) if keycardFlowType == ResponseTypeValueInsertCard and keycardEvent.error.len > 0 and keycardEvent.error == ErrorConnection: