DoOnce helper

This commit is contained in:
Kyle Spearrin 2019-05-06 22:49:57 -04:00
parent 4ed12a859b
commit 5ef4c96ee7
3 changed files with 28 additions and 0 deletions

View file

@ -9,6 +9,8 @@ namespace Bit.App.Pages
protected int AndroidShowModalAnimationDelay = 400; protected int AndroidShowModalAnimationDelay = 400;
protected int AndroidShowPageAnimationDelay = 100; protected int AndroidShowPageAnimationDelay = 100;
public DateTime? LastPageAction { get; set; }
protected void SetActivityIndicator() protected void SetActivityIndicator()
{ {
Content = new ActivityIndicator Content = new ActivityIndicator
@ -54,5 +56,17 @@ namespace Bit.App.Pages
Device.BeginInvokeOnMainThread(() => input.Focus()); Device.BeginInvokeOnMainThread(() => input.Focus());
}); });
} }
protected bool DoOnce(Action action = null, int milliseconds = 1000)
{
if(LastPageAction.HasValue && (DateTime.UtcNow - LastPageAction.Value).TotalMilliseconds < milliseconds)
{
// Last action occurred recently.
return false;
}
LastPageAction = DateTime.UtcNow;
action?.Invoke();
return true;
}
} }
} }

View file

@ -76,12 +76,21 @@ namespace Bit.App.Pages
private void GoBack() private void GoBack()
{ {
if(!DoOnce())
{
return;
}
Navigation.PopModalAsync(false); Navigation.PopModalAsync(false);
} }
private async void RowSelected(object sender, SelectedItemChangedEventArgs e) private async void RowSelected(object sender, SelectedItemChangedEventArgs e)
{ {
((ListView)sender).SelectedItem = null; ((ListView)sender).SelectedItem = null;
if(!DoOnce())
{
return;
}
if(e.SelectedItem is CipherView cipher) if(e.SelectedItem is CipherView cipher)
{ {
await _vm.SelectCipherAsync(cipher); await _vm.SelectCipherAsync(cipher);

View file

@ -74,6 +74,11 @@ namespace Bit.App.Pages
private async void RowSelected(object sender, SelectedItemChangedEventArgs e) private async void RowSelected(object sender, SelectedItemChangedEventArgs e)
{ {
((ListView)sender).SelectedItem = null; ((ListView)sender).SelectedItem = null;
if(!DoOnce())
{
return;
}
if(!(e.SelectedItem is GroupingsPageListItem item)) if(!(e.SelectedItem is GroupingsPageListItem item))
{ {
return; return;