mirror of
https://github.com/bitwarden/android.git
synced 2024-12-25 02:18:27 +03:00
background timer for locking
This commit is contained in:
parent
ab5f1385c5
commit
a3f0254fb2
3 changed files with 36 additions and 0 deletions
|
@ -6,9 +6,11 @@ namespace Bit.App.Abstractions
|
||||||
{
|
{
|
||||||
public interface ILockService
|
public interface ILockService
|
||||||
{
|
{
|
||||||
|
bool CheckForLockInBackground { get; set; }
|
||||||
void UpdateLastActivity(DateTime? activityDate = null);
|
void UpdateLastActivity(DateTime? activityDate = null);
|
||||||
Task<LockType> GetLockTypeAsync(bool forceLock);
|
Task<LockType> GetLockTypeAsync(bool forceLock);
|
||||||
Task CheckLockAsync(bool forceLock);
|
Task CheckLockAsync(bool forceLock);
|
||||||
bool TopPageIsLock();
|
bool TopPageIsLock();
|
||||||
|
void StartLockTimer();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -86,11 +86,15 @@ namespace Bit.App
|
||||||
await Task.Run(() => FullSyncAsync()).ConfigureAwait(false);
|
await Task.Run(() => FullSyncAsync()).ConfigureAwait(false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Still testing.
|
||||||
|
//_lockService.StartLockTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async override void OnStart()
|
protected async override void OnStart()
|
||||||
{
|
{
|
||||||
// Handle when your app starts
|
// Handle when your app starts
|
||||||
|
_lockService.CheckForLockInBackground = false;
|
||||||
await _lockService.CheckLockAsync(false);
|
await _lockService.CheckLockAsync(false);
|
||||||
|
|
||||||
if(string.IsNullOrWhiteSpace(_options.Uri))
|
if(string.IsNullOrWhiteSpace(_options.Uri))
|
||||||
|
@ -113,6 +117,7 @@ namespace Bit.App
|
||||||
protected override void OnSleep()
|
protected override void OnSleep()
|
||||||
{
|
{
|
||||||
// Handle when your app sleeps
|
// Handle when your app sleeps
|
||||||
|
_lockService.CheckForLockInBackground = true;
|
||||||
Debug.WriteLine("OnSleep");
|
Debug.WriteLine("OnSleep");
|
||||||
|
|
||||||
SetMainPageFromAutofill();
|
SetMainPageFromAutofill();
|
||||||
|
@ -126,6 +131,7 @@ namespace Bit.App
|
||||||
protected async override void OnResume()
|
protected async override void OnResume()
|
||||||
{
|
{
|
||||||
base.OnResume();
|
base.OnResume();
|
||||||
|
_lockService.CheckForLockInBackground = false;
|
||||||
|
|
||||||
// workaround for app compat bug
|
// workaround for app compat bug
|
||||||
// ref https://forums.xamarin.com/discussion/62414/app-resuming-results-in-crash-with-formsappcompatactivity
|
// ref https://forums.xamarin.com/discussion/62414/app-resuming-results-in-crash-with-formsappcompatactivity
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace Bit.App.Services
|
||||||
private readonly IAppSettingsService _appSettings;
|
private readonly IAppSettingsService _appSettings;
|
||||||
private readonly IAuthService _authService;
|
private readonly IAuthService _authService;
|
||||||
private readonly IFingerprint _fingerprint;
|
private readonly IFingerprint _fingerprint;
|
||||||
|
private bool _timerCreated = false;
|
||||||
|
|
||||||
public LockService(
|
public LockService(
|
||||||
ISettings settings,
|
ISettings settings,
|
||||||
|
@ -30,6 +31,8 @@ namespace Bit.App.Services
|
||||||
_fingerprint = fingerprint;
|
_fingerprint = fingerprint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool CheckForLockInBackground { get; set; } = true;
|
||||||
|
|
||||||
public void UpdateLastActivity(DateTime? activityDate = null)
|
public void UpdateLastActivity(DateTime? activityDate = null)
|
||||||
{
|
{
|
||||||
if(_appSettings.Locked)
|
if(_appSettings.Locked)
|
||||||
|
@ -136,5 +139,30 @@ namespace Bit.App.Services
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void StartLockTimer()
|
||||||
|
{
|
||||||
|
if(_timerCreated)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_timerCreated = true;
|
||||||
|
Device.StartTimer(TimeSpan.FromMinutes(1), () =>
|
||||||
|
{
|
||||||
|
if(CheckForLockInBackground && !_appSettings.Locked)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine("Check lock from timer at " + DateTime.Now);
|
||||||
|
var lockType = GetLockTypeAsync(false).GetAwaiter().GetResult();
|
||||||
|
if(lockType != LockType.None)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine("Locked from timer at " + DateTime.Now);
|
||||||
|
_appSettings.Locked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue