public async void OnFinished(SpassFingerprintStatus status) { //_completedSource = new TaskCompletionSource<int>(); var resultStatus = GetResultStatus(status); if (resultStatus == FingerprintAuthenticationResultStatus.Failed && _retriesLeft > 0) { _failedListener?.OnFailedTry(); if (_retriesLeft > 0) { _retriesLeft--; //await _completedSource.Task; if (await StartIdentify()) return; } } else if (resultStatus == FingerprintAuthenticationResultStatus.Failed && _retriesLeft <= 0) { resultStatus = FingerprintAuthenticationResultStatus.TooManyAttempts; } _taskCompletionSource.TrySetResult(new FingerprintAuthenticationResult { Status = resultStatus }); }
private static FingerprintAuthenticationResultStatus GetResultStatus(SpassFingerprintStatus status) { FingerprintAuthenticationResultStatus resultStatus; switch (status) { case SpassFingerprintStatus.Success: resultStatus = FingerprintAuthenticationResultStatus.Succeeded; break; case SpassFingerprintStatus.TimeoutFailed: case SpassFingerprintStatus.SensorFailed: resultStatus = FingerprintAuthenticationResultStatus.Failed; break; case SpassFingerprintStatus.UserCancelled: resultStatus = FingerprintAuthenticationResultStatus.Canceled; break; case SpassFingerprintStatus.ButtonPressed: resultStatus = FingerprintAuthenticationResultStatus.Canceled; break; case SpassFingerprintStatus.QualityFailed: resultStatus = FingerprintAuthenticationResultStatus.Failed; break; case SpassFingerprintStatus.UserCancelledByTouchOutside: resultStatus = FingerprintAuthenticationResultStatus.Canceled; break; case SpassFingerprintStatus.Failed: resultStatus = FingerprintAuthenticationResultStatus.Failed; break; case SpassFingerprintStatus.OperationDenied: resultStatus = FingerprintAuthenticationResultStatus.UnknownError; break; case SpassFingerprintStatus.PasswordSuccess: resultStatus = FingerprintAuthenticationResultStatus.Succeeded; break; default: throw new ArgumentOutOfRangeException(nameof(status), status, null); } return(resultStatus); }
private static FingerprintAuthenticationResultStatus GetResultStatus(SpassFingerprintStatus status) { FingerprintAuthenticationResultStatus resultStatus; switch (status) { case SpassFingerprintStatus.Success: resultStatus = FingerprintAuthenticationResultStatus.Succeeded; break; case SpassFingerprintStatus.TimeoutFailed: case SpassFingerprintStatus.SensorFailed: resultStatus = FingerprintAuthenticationResultStatus.Failed; break; case SpassFingerprintStatus.UserCancelled: resultStatus = FingerprintAuthenticationResultStatus.Canceled; break; case SpassFingerprintStatus.ButtonPressed: resultStatus = FingerprintAuthenticationResultStatus.Canceled; break; case SpassFingerprintStatus.QualityFailed: resultStatus = FingerprintAuthenticationResultStatus.Failed; break; case SpassFingerprintStatus.UserCancelledByTouchOutside: resultStatus = FingerprintAuthenticationResultStatus.Canceled; break; case SpassFingerprintStatus.Failed: resultStatus = FingerprintAuthenticationResultStatus.Failed; break; case SpassFingerprintStatus.OperationDenied: resultStatus = FingerprintAuthenticationResultStatus.UnknownError; break; case SpassFingerprintStatus.PasswordSuccess: resultStatus = FingerprintAuthenticationResultStatus.Succeeded; break; default: throw new ArgumentOutOfRangeException(nameof(status), status, null); } return resultStatus; }