diff --git a/Directory.Build.props b/Directory.Build.props index 4f3a527..78ecee5 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ - 0.1.3 + 0.1.4 Justin Paul Justin Paul Webhook Server diff --git a/src/WebhookServer.Gui/ViewModels/ConfigCheckpointsViewModel.cs b/src/WebhookServer.Gui/ViewModels/ConfigCheckpointsViewModel.cs index d0fa3fc..817cc68 100644 --- a/src/WebhookServer.Gui/ViewModels/ConfigCheckpointsViewModel.cs +++ b/src/WebhookServer.Gui/ViewModels/ConfigCheckpointsViewModel.cs @@ -82,8 +82,14 @@ public sealed partial class ConfigCheckpointsViewModel : ObservableObject { if (Selected is null) return; + // Capture before the refresh; the ObservableCollection.Clear() in + // RefreshAsync nulls Selected (the original instance is gone from the + // collection so the SelectedItem binding clears). + var fileName = Selected.FileName; + var savedAt = Selected.SavedAt; + var ok = MessageBox.Show( - $"Roll the configuration back to the checkpoint from {Selected.SavedAt.ToLocalTime():yyyy-MM-dd HH:mm:ss}?\n\nThe current configuration is automatically saved as a new checkpoint first, so you can roll forward again.", + $"Roll the configuration back to the checkpoint from {savedAt.ToLocalTime():yyyy-MM-dd HH:mm:ss}?\n\nThe current configuration is automatically saved as a new checkpoint first, so you can roll forward again.", "Confirm rollback", MessageBoxButton.OKCancel, MessageBoxImage.Warning); @@ -91,10 +97,10 @@ public sealed partial class ConfigCheckpointsViewModel : ObservableObject try { - await _client.RestoreBackupAsync(Selected.FileName).ConfigureAwait(false); + await _client.RestoreBackupAsync(fileName).ConfigureAwait(false); await RefreshAsync().ConfigureAwait(false); Application.Current.Dispatcher.Invoke(() => - StatusMessage = $"Rolled back to {Selected!.FileName}."); + StatusMessage = $"Rolled back to {fileName}."); } catch (Exception ex) {