app/BTCPayApp.UI/Components/WalletSetup.razor
Dennis Reimann 558b9b50de
Move stuff
2023-11-09 06:42:57 +01:00

67 lines
1.9 KiB
Plaintext

@using System.ComponentModel.DataAnnotations
@using NBitcoin
<ValidationEditContext Model="this" @ref="_validationEditContext" Validate="Validate" OnValidSubmit="OnSubmit">
<p>Please write down this seed and keep it safe. You will need it to recover your wallet.</p>
<div class="form-group">
<label for="Mnemonic" class="form-label">Mnemonic Seed</label>
<div class="input-group">
<InputText id="Mnemonic" class="form-control" @bind-Value="Mnemonic" />
<button class="btn btn-outline-secondary" type="button" @onclick="GenerateSeed">Generate</button>
</div>
</div>
<button type="submit" class="btn btn-primary mt-3" disabled="@_validationEditContext.Invalid">
Continue
</button>
</ValidationEditContext>
@code {
private ValidationEditContext _validationEditContext;
private string _mnemonic;
private string Mnemonic
{
get => _mnemonic;
set
{
_mnemonic = value;
_validationEditContext.NotifyFieldChanged(() => Mnemonic);
}
}
private Task Validate()
{
Mnemonic? mnemonic = null;
string? xpub = null;
if (string.IsNullOrEmpty(Mnemonic))
{
_validationEditContext.MessageStore.Add(() => Mnemonic, "Please generate a mnemonic for the wallet");
return Task.CompletedTask;
}
try
{
new Mnemonic(Mnemonic);
}
catch (Exception e)
{
_validationEditContext.MessageStore.Add(() => Mnemonic, $"Invalid mnemonic: {e.Message}");
return Task.CompletedTask;
}
return Task.CompletedTask;
}
[Parameter]
public EventCallback<string> OnSeedChosen { get; set; }
private void OnSubmit()
{
OnSeedChosen.InvokeAsync(Mnemonic);
}
private void GenerateSeed()
{
Mnemonic = new Mnemonic(Wordlist.English, WordCount.Twelve).ToString();
}
}