diff --git a/src/App/App.xaml.cs b/src/App/App.xaml.cs index 240b6f288..43aab025f 100644 --- a/src/App/App.xaml.cs +++ b/src/App/App.xaml.cs @@ -184,6 +184,10 @@ namespace Bit.App { SyncIfNeeded(); } + if(Current.MainPage is NavigationPage navPage && navPage.CurrentPage is LockPage lockPage) + { + await lockPage.PromptFingerprintAfterResumeAsync(); + } } private void SetCulture() diff --git a/src/App/Pages/Accounts/LockPage.xaml.cs b/src/App/Pages/Accounts/LockPage.xaml.cs index 2950d6352..f8a7c2aa5 100644 --- a/src/App/Pages/Accounts/LockPage.xaml.cs +++ b/src/App/Pages/Accounts/LockPage.xaml.cs @@ -11,6 +11,9 @@ namespace Bit.App.Pages private readonly bool _autoPromptFingerprint; private readonly LockPageViewModel _vm; + private bool _promptedAfterResume; + private bool _appeared; + public LockPage(AppOptions appOptions = null, bool autoPromptFingerprint = true) { _appOptions = appOptions; @@ -42,9 +45,24 @@ namespace Bit.App.Pages public Entry MasterPasswordEntry { get; set; } public Entry PinEntry { get; set; } + public async Task PromptFingerprintAfterResumeAsync() + { + await Task.Delay(500); + if(!_promptedAfterResume) + { + _promptedAfterResume = true; + await _vm?.PromptFingerprintAsync(); + } + } + protected override async void OnAppearing() { base.OnAppearing(); + if(_appeared) + { + return; + } + _appeared = true; await _vm.InitAsync(_autoPromptFingerprint); if(!_vm.FingerprintLock) {