1
0
mirror of https://github.com/bitwarden/mobile synced 2026-01-03 09:03:35 +00:00

SG-687 Request time not updating (#2108)

* [SG-687] request updates text with timer task and expires after 15 mins.

* [SG-697] PR Fixes

* [SG-687] Ran code format

* [SG-687] PR Fixes

* [SG-687] missed constant replacement

* [SG-687] PR fixes
This commit is contained in:
André Bispo
2022-10-03 17:42:33 +01:00
committed by GitHub
parent bc949fe87a
commit 1db4c4fc8b
3 changed files with 73 additions and 17 deletions

View File

@@ -10,13 +10,21 @@ namespace Bit.App.Utilities
{
private readonly ILogger _logger;
private readonly Action _action;
private readonly CancellationTokenSource _cancellationToken;
private readonly Func<Task> _actionTask;
private readonly CancellationTokenSource _cancellationTokenSource;
public TimerTask(ILogger logger, Action action, CancellationTokenSource cancellationToken)
public TimerTask(ILogger logger, Action action, CancellationTokenSource cancellationTokenSource)
{
_logger = logger;
_action = action ?? throw new ArgumentNullException();
_cancellationToken = cancellationToken;
_action = action ?? throw new ArgumentNullException(nameof(action));
_cancellationTokenSource = cancellationTokenSource;
}
public TimerTask(ILogger logger, Func<Task> actionTask, CancellationTokenSource cancellationTokenSource)
{
_logger = logger;
_actionTask = actionTask ?? throw new ArgumentNullException(nameof(actionTask));
_cancellationTokenSource = cancellationTokenSource;
}
public Task RunPeriodic(TimeSpan? interval = null)
@@ -26,23 +34,31 @@ namespace Bit.App.Utilities
{
try
{
while (!_cancellationToken.IsCancellationRequested)
while (!_cancellationTokenSource.IsCancellationRequested)
{
await Device.InvokeOnMainThreadAsync(() =>
await Device.InvokeOnMainThreadAsync(async () =>
{
if (!_cancellationToken.IsCancellationRequested)
if (!_cancellationTokenSource.IsCancellationRequested)
{
try
{
_action();
if (_action != null)
{
_action();
}
else if (_actionTask != null)
{
await _actionTask();
}
}
catch (Exception ex)
{
_cancellationTokenSource?.Cancel();
_logger?.Exception(ex);
}
}
});
await Task.Delay(interval.Value, _cancellationToken.Token);
await Task.Delay(interval.Value, _cancellationTokenSource.Token);
}
}
catch (TaskCanceledException) { }
@@ -50,7 +66,7 @@ namespace Bit.App.Utilities
{
_logger?.Exception(ex);
}
}, _cancellationToken.Token);
}, _cancellationTokenSource.Token);
}
}
}