Public Access
Desktop: keep a vault-visibility failure from closing the app, and leave a crash log when anything else does
This commit is contained in:
1 parent
170caa1391
commit
37e9d74938
6 files changed
+154
-5
No files matched your search
@@ -2133,12 +2133,25 @@ internal sealed partial class MainWindowViewModel : ObservableObject, IAsyncDisp
|
||||
return;
|
||||
}
|
||||
|
||||
await preferences.SetHiddenAsync(row.VaultId, hiding, CancellationToken.None)
|
||||
.ConfigureAwait(true);
|
||||
try
|
||||
{
|
||||
await preferences.SetHiddenAsync(row.VaultId, hiding, CancellationToken.None)
|
||||
.ConfigureAwait(true);
|
||||
|
||||
// The lists first, then the switches: rebuilding the switches is what redraws the menu, and doing it
|
||||
// second means the menu and the screen behind it never disagree, even for a frame.
|
||||
await open.RefreshVaultsAsync(CancellationToken.None).ConfigureAwait(true);
|
||||
// The lists first, then the switches: rebuilding the switches is what redraws the menu, and doing
|
||||
// it second means the menu and the screen behind it never disagree, even for a frame.
|
||||
await open.RefreshVaultsAsync(CancellationToken.None).ConfigureAwait(true);
|
||||
}
|
||||
catch (Exception exception) when (exception is not OutOfMemoryException)
|
||||
{
|
||||
// A command's exception is rethrown on the UI thread, where nothing catches it — so a cache that
|
||||
// could not be written to, or a vault locked halfway through, used to close the application. The
|
||||
// switches are redrawn from what is actually stored, so the menu does not claim the change.
|
||||
RebuildVaultToggles();
|
||||
StatusMessage = $"Could not change which vaults are shown: {exception.Message}";
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
RebuildVaultToggles();
|
||||
|
||||
|
||||
Reference in new issue
Block a user