Make sure to unlock wallet.
MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/PinPadViewModel.cs
WalletWasabi.Gui/Controls/WalletExplorer/PinPadViewModel.cs
@@ -77,6 +77,20 @@ namespace WalletWasabi.Gui.Controls.WalletExplorer
SetWarningMessage(ex.ToTypeMessageString());
}
+ public static async Task UnlockAsync(Global global)
+ {
+ using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3)))
+ {
+ var client = new HwiClient(global.Network);
+ IEnumerable<HwiEnumerateEntry> hwiEntries = await client.EnumerateAsync(cts.Token);
+
+ foreach (var hwiEntry in hwiEntries.Where(x => x.NeedsPinSent is true))
+ {
+ await UnlockAsync(global, hwiEntry);
+ }
+ }
+ }
+
public static async Task UnlockAsync(Global global, HwiEnumerateEntry hwiEntry)
{
using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3)))

MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/ReceiveTabViewModel.cs
WalletWasabi.Gui/Controls/WalletExplorer/ReceiveTabViewModel.cs
@@ -14,6 +14,7 @@ using System.Threading.Tasks;
using WalletWasabi.Gui.Tabs.WalletManager;
using WalletWasabi.Gui.ViewModels;
using WalletWasabi.Hwi;
+using WalletWasabi.Hwi.Exceptions;
using WalletWasabi.KeyManagement;
using WalletWasabi.Models;
@@ -140,8 +141,16 @@ namespace WalletWasabi.Gui.Controls.WalletExplorer
var client = new HwiClient(Global.Network);
using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(60)))
{
+ try
+ {
+ await client.DisplayAddressAsync(KeyManager.MasterFingerprint.Value, SelectedAddress.Model.FullKeyPath, cts.Token);
+ }
+ catch (HwiException)
+ {
+ await PinPadViewModel.UnlockAsync(Global);
await client.DisplayAddressAsync(KeyManager.MasterFingerprint.Value, SelectedAddress.Model.FullKeyPath, cts.Token);
}
+ }
});
_suggestions = new ObservableCollection<SuggestionViewModel>();

MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/SendTabViewModel.cs
WalletWasabi.Gui/Controls/WalletExplorer/SendTabViewModel.cs
@@ -24,6 +24,7 @@ using WalletWasabi.Gui.ViewModels;
using WalletWasabi.Gui.ViewModels.Validation;
using WalletWasabi.Helpers;
using WalletWasabi.Hwi;
+using WalletWasabi.Hwi.Exceptions;
using WalletWasabi.Hwi.Models;
using WalletWasabi.KeyManagement;
using WalletWasabi.Logging;
@@ -375,7 +376,16 @@ namespace WalletWasabi.Gui.Controls.WalletExplorer
using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3)))
{
- PSBT signedPsbt = await client.SignTxAsync(KeyManager.MasterFingerprint.Value, result.Psbt, cts.Token);
+ PSBT signedPsbt = null;
+ try
+ {
+ signedPsbt = await client.SignTxAsync(KeyManager.MasterFingerprint.Value, result.Psbt, cts.Token);
+ }
+ catch (HwiException)
+ {
+ await PinPadViewModel.UnlockAsync(Global);
+ signedPsbt = await client.SignTxAsync(KeyManager.MasterFingerprint.Value, result.Psbt, cts.Token);
+ }
signedTransaction = signedPsbt.ExtractSmartTransaction(result.Transaction.Height, result.Transaction.BlockHash, result.Transaction.BlockIndex, result.Transaction.Label, result.Transaction.FirstSeen, result.Transaction.IsReplacement);
}
}

Make sure to unlock wallet.