Fix for password unlock for autofill and share-to-send on Android (#1453)

This commit is contained in:
Matt Portune 2021-07-09 11:48:03 -04:00 committed by GitHub
parent 9298d57f22
commit ff19578807
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 1 deletions

View File

@ -57,6 +57,7 @@ namespace Bit.Droid.Autofill
} }
List<FilledItem> items = null; List<FilledItem> items = null;
await _vaultTimeoutService.CheckVaultTimeoutAsync();
var locked = await _vaultTimeoutService.IsLockedAsync(); var locked = await _vaultTimeoutService.IsLockedAsync();
if (!locked) if (!locked)
{ {

View File

@ -16,6 +16,7 @@ namespace Bit.App.Pages
public partial class SendAddEditPage : BaseContentPage public partial class SendAddEditPage : BaseContentPage
{ {
private readonly IBroadcasterService _broadcasterService; private readonly IBroadcasterService _broadcasterService;
private readonly IVaultTimeoutService _vaultTimeoutService;
private AppOptions _appOptions; private AppOptions _appOptions;
private SendAddEditPageViewModel _vm; private SendAddEditPageViewModel _vm;
@ -26,6 +27,7 @@ namespace Bit.App.Pages
SendType? type = null) SendType? type = null)
{ {
_broadcasterService = ServiceContainer.Resolve<IBroadcasterService>("broadcasterService"); _broadcasterService = ServiceContainer.Resolve<IBroadcasterService>("broadcasterService");
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>("vaultTimeoutService");
_appOptions = appOptions; _appOptions = appOptions;
InitializeComponent(); InitializeComponent();
_vm = BindingContext as SendAddEditPageViewModel; _vm = BindingContext as SendAddEditPageViewModel;
@ -79,6 +81,11 @@ namespace Bit.App.Pages
protected override async void OnAppearing() protected override async void OnAppearing()
{ {
base.OnAppearing(); base.OnAppearing();
await _vaultTimeoutService.CheckVaultTimeoutAsync();
if (await _vaultTimeoutService.IsLockedAsync())
{
return;
}
await _vm.InitAsync(); await _vm.InitAsync();
_broadcasterService.Subscribe(nameof(SendAddEditPage), message => _broadcasterService.Subscribe(nameof(SendAddEditPage), message =>
{ {
@ -109,6 +116,16 @@ namespace Bit.App.Pages
}); });
} }
protected override bool OnBackButtonPressed()
{
if (_vm.IsAddFromShare && Device.RuntimePlatform == Device.Android)
{
_appOptions.CreateSend = null;
_vm.CloseMainApp();
}
return base.OnBackButtonPressed();
}
protected override void OnDisappearing() protected override void OnDisappearing()
{ {
base.OnDisappearing(); base.OnDisappearing();

View File

@ -398,7 +398,7 @@ namespace Bit.App.Pages
if (IsAddFromShare && Device.RuntimePlatform == Device.Android) if (IsAddFromShare && Device.RuntimePlatform == Device.Android)
{ {
_deviceActionService.CloseMainApp(); CloseMainApp();
} }
else else
{ {
@ -429,6 +429,14 @@ namespace Bit.App.Pages
return false; return false;
} }
public void CloseMainApp()
{
if (Device.RuntimePlatform == Device.Android)
{
_deviceActionService.CloseMainApp();
}
}
public async Task<bool> RemovePasswordAsync() public async Task<bool> RemovePasswordAsync()
{ {
return await AppHelpers.RemoveSendPasswordAsync(SendId); return await AppHelpers.RemoveSendPasswordAsync(SendId);

View File

@ -20,6 +20,7 @@ namespace Bit.App.Pages
private readonly AppOptions _appOptions; private readonly AppOptions _appOptions;
private readonly IStorageService _storageService; private readonly IStorageService _storageService;
private readonly IDeviceActionService _deviceActionService; private readonly IDeviceActionService _deviceActionService;
private readonly IVaultTimeoutService _vaultTimeoutService;
private AddEditPageViewModel _vm; private AddEditPageViewModel _vm;
private bool _fromAutofill; private bool _fromAutofill;
@ -38,6 +39,7 @@ namespace Bit.App.Pages
{ {
_storageService = ServiceContainer.Resolve<IStorageService>("storageService"); _storageService = ServiceContainer.Resolve<IStorageService>("storageService");
_deviceActionService = ServiceContainer.Resolve<IDeviceActionService>("deviceActionService"); _deviceActionService = ServiceContainer.Resolve<IDeviceActionService>("deviceActionService");
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>("vaultTimeoutService");
_appOptions = appOptions; _appOptions = appOptions;
_fromAutofill = fromAutofill; _fromAutofill = fromAutofill;
FromAutofillFramework = _appOptions?.FromAutofillFramework ?? false; FromAutofillFramework = _appOptions?.FromAutofillFramework ?? false;
@ -145,6 +147,11 @@ namespace Bit.App.Pages
protected override async void OnAppearing() protected override async void OnAppearing()
{ {
base.OnAppearing(); base.OnAppearing();
await _vaultTimeoutService.CheckVaultTimeoutAsync();
if (await _vaultTimeoutService.IsLockedAsync())
{
return;
}
await LoadOnAppearedAsync(_scrollView, true, async () => await LoadOnAppearedAsync(_scrollView, true, async () =>
{ {
var success = await _vm.LoadAsync(_appOptions); var success = await _vm.LoadAsync(_appOptions);

View File

@ -15,6 +15,7 @@ namespace Bit.App.Pages
{ {
private readonly AppOptions _appOptions; private readonly AppOptions _appOptions;
private readonly IPlatformUtilsService _platformUtilsService; private readonly IPlatformUtilsService _platformUtilsService;
private readonly IVaultTimeoutService _vaultTimeoutService;
private AutofillCiphersPageViewModel _vm; private AutofillCiphersPageViewModel _vm;
@ -27,11 +28,17 @@ namespace Bit.App.Pages
_vm.Init(appOptions); _vm.Init(appOptions);
_platformUtilsService = ServiceContainer.Resolve<IPlatformUtilsService>("platformUtilsService"); _platformUtilsService = ServiceContainer.Resolve<IPlatformUtilsService>("platformUtilsService");
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>("vaultTimeoutService");
} }
protected async override void OnAppearing() protected async override void OnAppearing()
{ {
base.OnAppearing(); base.OnAppearing();
await _vaultTimeoutService.CheckVaultTimeoutAsync();
if (await _vaultTimeoutService.IsLockedAsync())
{
return;
}
await LoadOnAppearedAsync(_mainLayout, false, async () => await LoadOnAppearedAsync(_mainLayout, false, async () =>
{ {
try try