@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(); }