diff options
author | Allan Wang <me@allanwang.ca> | 2019-09-29 00:31:00 -0700 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2019-09-29 00:31:00 -0700 |
commit | ee2cbac74472e72b37d08e9fbb1e60d3bdc2fddc (patch) | |
tree | dd0ac23fbfad907ee3b63ed5606c59cab5c44848 /app/src/main/kotlin/com/pitchedapps/frost/utils | |
parent | c9fec8cc993f159eb81803e8c0cd5855d2a9abd3 (diff) | |
download | frost-ee2cbac74472e72b37d08e9fbb1e60d3bdc2fddc.tar.gz frost-ee2cbac74472e72b37d08e9fbb1e60d3bdc2fddc.tar.bz2 frost-ee2cbac74472e72b37d08e9fbb1e60d3bdc2fddc.zip |
Fix crash for dialog prompt
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/utils')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt index 136fe28f..597b4921 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt @@ -21,6 +21,9 @@ import android.hardware.fingerprint.FingerprintManager import android.os.Build import androidx.biometric.BiometricPrompt import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleObserver +import androidx.lifecycle.OnLifecycleEvent import ca.allanwang.kau.utils.string import com.pitchedapps.frost.R import kotlinx.coroutines.CompletableDeferred @@ -80,7 +83,19 @@ object BiometricUtils { .setTitle(activity.string(R.string.biometrics_prompt_title)) .setNegativeButtonText(activity.string(R.string.kau_cancel)) .build() - BiometricPrompt(activity, executor, Callback(activity, deferred)).authenticate(info) + val prompt = BiometricPrompt(activity, executor, Callback(activity, deferred)) + activity.lifecycle.addObserver(object : LifecycleObserver { + @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) + fun onPause() { + if (!deferred.isCompleted) { + prompt.cancelAuthentication() + deferred.cancel() + activity.finish() + } + activity.lifecycle.removeObserver(this) + } + }) + prompt.authenticate(info) return deferred } |