add link to best practises, confirm written down checkbox, and change wording.
MODIFY
WalletWasabi.Gui/Tabs/WalletManager/GenerateWallets/GenerateWalletSuccessView.xaml
WalletWasabi.Gui/Tabs/WalletManager/GenerateWallets/GenerateWalletSuccessView.xaml
xmlns:controls="clr-namespace:WalletWasabi.Gui.Controls;assembly=WalletWasabi.Gui"
x:Class="WalletWasabi.Gui.Tabs.WalletManager.GenerateWallets.GenerateWalletSuccessView">
<StackPanel Margin="20" Spacing="10">
- <TextBlock Text="Write down these Recovery Words!" FontWeight="Bold" />
- <Border Padding="20" Margin="20 0 20 20" HorizontalAlignment="Center">
+ <TextBlock Text="Write down these Recovery Words &amp; Your Password" FontWeight="Bold" />
+ <Border Padding="20" Margin="20 0" HorizontalAlignment="Center">
<ItemsControl Items="{Binding MnemonicWords}">
<ItemsControl.Styles>
<Style Selector="TextBlock">
</ItemsControl.ItemsPanel>
</ItemsControl>
</Border>
- <TextBlock Text="You can recover your wallet on any computer with" />
- <TextBlock Text="- your Recovery Words AND" />
- <TextBlock Text="- your Password." />
- <TextBlock Text="The order is IMPORTANT so include the numbers." />
- <TextBlock Text="You will not be able to see the recovery words again." />
- <TextBlock Text="Only click the button below when you have written them down." />
- <Button Margin="0 10 0 0" HorizontalAlignment="Center" Content="I wrote down my Recovery Words!" Command="{Binding ConfirmCommand}" />
+ <TextBlock Text="Your Password" Margin="0 0 0 20" FontFamily="{StaticResource HandWrittenFont}" HorizontalAlignment="Center" FontSize="22" />
+ <TextBlock Text="You need BOTH the Recovery Words AND the Password to recover your wallet." />
+ <TextBlock Text="Heads Up! You always need the password to spend your bitcoin. Use a secure password and back it up."/>
+ <Button Content="Find out more about password best practises here." Classes="activeHyperLink" Command="{Binding PasswordBestPracticesCommand}" HorizontalAlignment="Left" />
+
+ <CheckBox Margin="0 20 0 0" HorizontalAlignment="Center" IsChecked="{Binding IsConfirmed}" Content="I have written down my password and recovery words." />
+ <Button Margin="0 10 0 0" HorizontalAlignment="Center" Content="Continue" Command="{Binding ConfirmCommand}" />
</StackPanel>
</UserControl>

MODIFY
WalletWasabi.Gui/Tabs/WalletManager/GenerateWallets/GenerateWalletSuccessViewModel.cs
WalletWasabi.Gui/Tabs/WalletManager/GenerateWallets/GenerateWalletSuccessViewModel.cs
using NBitcoin;
using ReactiveUI;
-using System.Reactive;
-using WalletWasabi.Gui.ViewModels;
-using WalletWasabi.Logging;
+using Splat;
using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reactive;
using System.Reactive.Linq;
-using WalletWasabi.Helpers;
using WalletWasabi.Blockchain.Keys;
-using WalletWasabi.Models;
using WalletWasabi.Gui.Helpers;
-using Splat;
-using System.Collections.Generic;
+using WalletWasabi.Gui.ViewModels;
+using WalletWasabi.Logging;
namespace WalletWasabi.Gui.Tabs.WalletManager.GenerateWallets
{
internal class GenerateWalletSuccessViewModel : CategoryViewModel
{
+ private const string PasswordBestPractisesUrl = "https://docs.wasabiwallet.io/using-wasabi/PasswordBestPractices.html";
private List<string> _mnemonicWords;
+ private bool _isConfirmed;
public GenerateWalletSuccessViewModel(WalletManagerViewModel owner, KeyManager keyManager, Mnemonic mnemonic) : base("Wallet Generated Successfully!")
{
@@ -35,9 +36,12 @@ namespace WalletWasabi.Gui.Tabs.WalletManager.GenerateWallets
var wallet = global.WalletManager.AddWallet(keyManager);
NotificationHelpers.Success("Wallet was generated.");
owner.SelectTestPassword(wallet.WalletName);
- });
+ }, this.WhenAnyValue(x=>x.IsConfirmed));
+
+ PasswordBestPracticesCommand = ReactiveCommand.CreateFromTask(async () => await IoHelpers.OpenBrowserAsync(PasswordBestPractisesUrl));
ConfirmCommand.ThrownExceptions
+ .Concat(PasswordBestPracticesCommand.ThrownExceptions)
.ObserveOn(RxApp.TaskpoolScheduler)
.Subscribe(ex => Logger.LogError(ex));
}
@@ -48,6 +52,14 @@ namespace WalletWasabi.Gui.Tabs.WalletManager.GenerateWallets
set { this.RaiseAndSetIfChanged(ref _mnemonicWords, value); }
}
+ public bool IsConfirmed
+ {
+ get { return _isConfirmed; }
+ set { this.RaiseAndSetIfChanged(ref _isConfirmed, value); }
+ }
+
public ReactiveCommand<Unit, Unit> ConfirmCommand { get; }
+
+ public ReactiveCommand<Unit, Unit> PasswordBestPracticesCommand { get; }
}
}

add link to best practises, confirm written down checkbox, and change wording.