@using System.Globalization
@inherits VaultElement
@implements IDisposable
@code {
private readonly VaultBridgeUI ui;
public PinInput(VaultBridgeUI ui)
{
this.ui = ui;
}
public int Value => int.TryParse(input, CultureInfo.InvariantCulture, out var v) ? v : 0;
public string input = "";
public string Display = "";
public Task GetPin()
{
ui.ShowFeedback(FeedbackType.Loading, ui.StringLocalizer["Enter the pin."]);
ui.AddElement(this);
_cts = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
return _cts.Task;
}
public void Click(int i)
{
if (input.Length > 10)
return;
input += i;
UpdateDisplay();
}
private void UpdateDisplay()
{
Display = new string('*', input.Length);
ui.StateHasChanged();
}
public void DeleteAll()
{
input = "";
UpdateDisplay();
}
private TaskCompletionSource _cts;
public void OnConfirmPinClick()
{
ui.Elements.Remove(this);
ui.ShowFeedback(FeedbackType.Loading, ui.StringLocalizer["Verifying pin..."]);
_cts?.TrySetResult(this.Value);
_cts = null;
}
public void Dispose() => _cts?.TrySetCanceled();
}