diff --git a/BusLane.csproj b/BusLane.csproj index e3075f3..1433e11 100644 --- a/BusLane.csproj +++ b/BusLane.csproj @@ -31,7 +31,7 @@ - + diff --git a/ViewModels/SettingsViewModel.cs b/ViewModels/SettingsViewModel.cs index 674282a..9a0d892 100644 --- a/ViewModels/SettingsViewModel.cs +++ b/ViewModels/SettingsViewModel.cs @@ -8,6 +8,7 @@ public partial class SettingsViewModel : ViewModelBase { private readonly Action _onClose; private string _originalTheme = "Light"; + private bool _isLoading; [ObservableProperty] private bool _confirmBeforeDelete = true; [ObservableProperty] private bool _confirmBeforePurge = true; @@ -31,23 +32,36 @@ public SettingsViewModel(Action onClose) partial void OnThemeChanged(string value) { + // Skip theme preview during initial load + if (_isLoading) + return; + // Apply theme immediately as preview when user changes it App.Instance?.ApplyTheme(value); } private void LoadSettings() { - // Load settings from preferences/storage - ConfirmBeforeDelete = Preferences.ConfirmBeforeDelete; - ConfirmBeforePurge = Preferences.ConfirmBeforePurge; - AutoRefreshMessages = Preferences.AutoRefreshMessages; - AutoRefreshIntervalSeconds = Preferences.AutoRefreshIntervalSeconds; - DefaultMessageCount = Preferences.DefaultMessageCount; - ShowDeadLetterBadges = Preferences.ShowDeadLetterBadges; - EnableMessagePreview = Preferences.EnableMessagePreview; - - // Set theme field directly to avoid triggering OnThemeChanged during load - _theme = Preferences.Theme; + try + { + _isLoading = true; + + // Load settings from preferences/storage + ConfirmBeforeDelete = Preferences.ConfirmBeforeDelete; + ConfirmBeforePurge = Preferences.ConfirmBeforePurge; + AutoRefreshMessages = Preferences.AutoRefreshMessages; + AutoRefreshIntervalSeconds = Preferences.AutoRefreshIntervalSeconds; + DefaultMessageCount = Preferences.DefaultMessageCount; + ShowDeadLetterBadges = Preferences.ShowDeadLetterBadges; + EnableMessagePreview = Preferences.EnableMessagePreview; + + // Use the generated property instead of the field + Theme = Preferences.Theme; + } + finally + { + _isLoading = false; + } } [RelayCommand]