67 lines
1.9 KiB
Plaintext
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();
|
|
}
|
|
}
|