Clear intent from autofill. Background app when back button on lock page.
This commit is contained in:
parent
99e78092ed
commit
e970ca49e8
|
@ -31,7 +31,12 @@ namespace Bit.Android
|
||||||
var uri = Intent.Flags.HasFlag(ActivityFlags.LaunchedFromHistory) ? null : Intent.GetStringExtra("uri");
|
var uri = Intent.Flags.HasFlag(ActivityFlags.LaunchedFromHistory) ? null : Intent.GetStringExtra("uri");
|
||||||
if(Intent.HasExtra("uri"))
|
if(Intent.HasExtra("uri"))
|
||||||
{
|
{
|
||||||
|
// Clear intent for future. ref: http://stackoverflow.com/a/29947867/1090359
|
||||||
Intent.RemoveExtra("uri");
|
Intent.RemoveExtra("uri");
|
||||||
|
Intent.ReplaceExtras(new Bundle());
|
||||||
|
Intent.SetAction(string.Empty);
|
||||||
|
Intent.SetData(null);
|
||||||
|
Intent.SetFlags(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(uri != null && !Resolver.IsSet)
|
if(uri != null && !Resolver.IsSet)
|
||||||
|
@ -95,6 +100,11 @@ namespace Bit.Android
|
||||||
{
|
{
|
||||||
ReturnCredentials(args);
|
ReturnCredentials(args);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MessagingCenter.Subscribe<Xamarin.Forms.Application>(Xamarin.Forms.Application.Current, "BackgroundApp", (sender) =>
|
||||||
|
{
|
||||||
|
MoveTaskToBack(true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReturnCredentials(VaultListPageModel.Login login)
|
private void ReturnCredentials(VaultListPageModel.Login login)
|
||||||
|
|
|
@ -120,6 +120,7 @@
|
||||||
<Compile Include="Models\Login.cs" />
|
<Compile Include="Models\Login.cs" />
|
||||||
<Compile Include="Models\Page\VaultViewLoginPageModel.cs" />
|
<Compile Include="Models\Page\VaultViewLoginPageModel.cs" />
|
||||||
<Compile Include="Pages\HomePage.cs" />
|
<Compile Include="Pages\HomePage.cs" />
|
||||||
|
<Compile Include="Pages\Lock\BaseLockPage.cs" />
|
||||||
<Compile Include="Pages\Lock\LockPasswordPage.cs" />
|
<Compile Include="Pages\Lock\LockPasswordPage.cs" />
|
||||||
<Compile Include="Pages\LoginTwoFactorPage.cs" />
|
<Compile Include="Pages\LoginTwoFactorPage.cs" />
|
||||||
<Compile Include="Pages\PasswordHintPage.cs" />
|
<Compile Include="Pages\PasswordHintPage.cs" />
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Acr.UserDialogs;
|
||||||
|
using Bit.App.Controls;
|
||||||
|
using Bit.App.Resources;
|
||||||
|
using Xamarin.Forms;
|
||||||
|
using XLabs.Ioc;
|
||||||
|
|
||||||
|
namespace Bit.App.Pages
|
||||||
|
{
|
||||||
|
public class BaseLockPage : ExtendedContentPage
|
||||||
|
{
|
||||||
|
public BaseLockPage()
|
||||||
|
: base(false, false)
|
||||||
|
{
|
||||||
|
|
||||||
|
UserDialogs = Resolver.Resolve<IUserDialogs>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected IUserDialogs UserDialogs { get; set; }
|
||||||
|
|
||||||
|
protected override bool OnBackButtonPressed()
|
||||||
|
{
|
||||||
|
if(Device.OS == TargetPlatform.Android)
|
||||||
|
{
|
||||||
|
MessagingCenter.Send(Application.Current, "BackgroundApp");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected async Task LogoutAsync()
|
||||||
|
{
|
||||||
|
if(!await UserDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessagingCenter.Send(Application.Current, "Logout", (string)null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Acr.UserDialogs;
|
|
||||||
using Bit.App.Controls;
|
using Bit.App.Controls;
|
||||||
using Bit.App.Resources;
|
using Bit.App.Resources;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
@ -10,19 +9,16 @@ using Plugin.Settings.Abstractions;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
public class LockFingerprintPage : ExtendedContentPage
|
public class LockFingerprintPage : BaseLockPage
|
||||||
{
|
{
|
||||||
private readonly IFingerprint _fingerprint;
|
private readonly IFingerprint _fingerprint;
|
||||||
private readonly IUserDialogs _userDialogs;
|
|
||||||
private readonly ISettings _settings;
|
private readonly ISettings _settings;
|
||||||
private readonly bool _checkFingerprintImmediately;
|
private readonly bool _checkFingerprintImmediately;
|
||||||
|
|
||||||
public LockFingerprintPage(bool checkFingerprintImmediately)
|
public LockFingerprintPage(bool checkFingerprintImmediately)
|
||||||
: base(false, false)
|
|
||||||
{
|
{
|
||||||
_checkFingerprintImmediately = checkFingerprintImmediately;
|
_checkFingerprintImmediately = checkFingerprintImmediately;
|
||||||
_fingerprint = Resolver.Resolve<IFingerprint>();
|
_fingerprint = Resolver.Resolve<IFingerprint>();
|
||||||
_userDialogs = Resolver.Resolve<IUserDialogs>();
|
|
||||||
_settings = Resolver.Resolve<ISettings>();
|
_settings = Resolver.Resolve<ISettings>();
|
||||||
|
|
||||||
Init();
|
Init();
|
||||||
|
@ -68,11 +64,6 @@ namespace Bit.App.Pages
|
||||||
Content = stackLayout;
|
Content = stackLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnBackButtonPressed()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnAppearing()
|
protected override void OnAppearing()
|
||||||
{
|
{
|
||||||
base.OnAppearing();
|
base.OnAppearing();
|
||||||
|
@ -83,16 +74,6 @@ namespace Bit.App.Pages
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task LogoutAsync()
|
|
||||||
{
|
|
||||||
if(!await _userDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessagingCenter.Send(Application.Current, "Logout", (string)null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task CheckFingerprintAsync()
|
public async Task CheckFingerprintAsync()
|
||||||
{
|
{
|
||||||
var result = await _fingerprint.AuthenticateAsync(AppResources.FingerprintDirection);
|
var result = await _fingerprint.AuthenticateAsync(AppResources.FingerprintDirection);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Acr.UserDialogs;
|
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Resources;
|
using Bit.App.Resources;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
@ -11,19 +10,16 @@ using Plugin.Settings.Abstractions;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
public class LockPasswordPage : ExtendedContentPage
|
public class LockPasswordPage : BaseLockPage
|
||||||
{
|
{
|
||||||
private readonly IAuthService _authService;
|
private readonly IAuthService _authService;
|
||||||
private readonly ISettings _settings;
|
private readonly ISettings _settings;
|
||||||
private readonly IUserDialogs _userDialogs;
|
|
||||||
private readonly ICryptoService _cryptoService;
|
private readonly ICryptoService _cryptoService;
|
||||||
|
|
||||||
public LockPasswordPage()
|
public LockPasswordPage()
|
||||||
: base(false, false)
|
|
||||||
{
|
{
|
||||||
_authService = Resolver.Resolve<IAuthService>();
|
_authService = Resolver.Resolve<IAuthService>();
|
||||||
_settings = Resolver.Resolve<ISettings>();
|
_settings = Resolver.Resolve<ISettings>();
|
||||||
_userDialogs = Resolver.Resolve<IUserDialogs>();
|
|
||||||
_cryptoService = Resolver.Resolve<ICryptoService>();
|
_cryptoService = Resolver.Resolve<ICryptoService>();
|
||||||
|
|
||||||
Init();
|
Init();
|
||||||
|
@ -100,11 +96,6 @@ namespace Bit.App.Pages
|
||||||
var task = CheckPasswordAsync();
|
var task = CheckPasswordAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnBackButtonPressed()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnAppearing()
|
protected override void OnAppearing()
|
||||||
{
|
{
|
||||||
base.OnAppearing();
|
base.OnAppearing();
|
||||||
|
@ -130,20 +121,10 @@ namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
// TODO: keep track of invalid attempts and logout?
|
// TODO: keep track of invalid attempts and logout?
|
||||||
|
|
||||||
_userDialogs.Alert(AppResources.InvalidMasterPassword);
|
UserDialogs.Alert(AppResources.InvalidMasterPassword);
|
||||||
PasswordCell.Entry.Text = string.Empty;
|
PasswordCell.Entry.Text = string.Empty;
|
||||||
PasswordCell.Entry.Focus();
|
PasswordCell.Entry.Focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task LogoutAsync()
|
|
||||||
{
|
|
||||||
if(!await _userDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessagingCenter.Send(Application.Current, "Logout", (string)null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,17 +11,14 @@ using Bit.App.Controls;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
public class LockPinPage : ExtendedContentPage
|
public class LockPinPage : BaseLockPage
|
||||||
{
|
{
|
||||||
private readonly IAuthService _authService;
|
private readonly IAuthService _authService;
|
||||||
private readonly IUserDialogs _userDialogs;
|
|
||||||
private readonly ISettings _settings;
|
private readonly ISettings _settings;
|
||||||
|
|
||||||
public LockPinPage()
|
public LockPinPage()
|
||||||
: base(false, false)
|
|
||||||
{
|
{
|
||||||
_authService = Resolver.Resolve<IAuthService>();
|
_authService = Resolver.Resolve<IAuthService>();
|
||||||
_userDialogs = Resolver.Resolve<IUserDialogs>();
|
|
||||||
_settings = Resolver.Resolve<ISettings>();
|
_settings = Resolver.Resolve<ISettings>();
|
||||||
|
|
||||||
Init();
|
Init();
|
||||||
|
@ -79,11 +76,6 @@ namespace Bit.App.Pages
|
||||||
PinControl.Entry.Focus();
|
PinControl.Entry.Focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnBackButtonPressed()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnAppearing()
|
protected override void OnAppearing()
|
||||||
{
|
{
|
||||||
base.OnAppearing();
|
base.OnAppearing();
|
||||||
|
@ -102,20 +94,10 @@ namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
// TODO: keep track of invalid attempts and logout?
|
// TODO: keep track of invalid attempts and logout?
|
||||||
|
|
||||||
_userDialogs.Alert(AppResources.InvalidPIN);
|
UserDialogs.Alert(AppResources.InvalidPIN);
|
||||||
Model.PIN = string.Empty;
|
Model.PIN = string.Empty;
|
||||||
PinControl.Entry.Focus();
|
PinControl.Entry.Focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task LogoutAsync()
|
|
||||||
{
|
|
||||||
if(!await _userDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessagingCenter.Send(Application.Current, "Logout", (string)null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue