Skip to content

Commit 86d93d3

Browse files
Set the correct default theme when migrating settings
GH-102
1 parent c99269c commit 86d93d3

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

src/KeyboardSwitch.Core/Services/Settings/JsonSettingsService.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ internal sealed class JsonSettingsService(
1616
ILogger<JsonSettingsService> logger)
1717
: IAppSettingsService
1818
{
19+
private static readonly Version VersionWithAppThemes = new(4, 3, 0);
20+
1921
private readonly IFileInfo file = fileSystem.FileInfo.New(
2022
Environment.ExpandEnvironmentVariables(globalSettings.Value.SettingsFilePath));
2123

@@ -101,7 +103,11 @@ private async Task MigrateSettingsToLatestVersion(AppSettings settings)
101103
settings.AppVersion,
102104
newVersion);
103105

104-
await this.SaveAppSettings(settings with { AppVersion = newVersion });
106+
var newSettings = settings.AppVersion < VersionWithAppThemes
107+
? settings with { AppTheme = this.GetDefaultTheme(), AppThemeVariant = AppThemeVariant.Auto }
108+
: settings;
109+
110+
await this.SaveAppSettings(newSettings with { AppVersion = newVersion });
105111
}
106112

107113
private AppSettings CreateDefaultAppSettings() =>
@@ -120,9 +126,7 @@ private AppSettings CreateDefaultAppSettings() =>
120126
ShowUninstalledLayoutsMessage = true,
121127
UseXsel = false,
122128
AppVersion = this.GetAppVersion(),
123-
AppTheme = OperatingSystem.IsMacOS()
124-
? AppTheme.MacOS
125-
: OperatingSystem.IsLinux() ? AppTheme.Simple : AppTheme.Fluent,
129+
AppTheme = this.GetDefaultTheme(),
126130
AppThemeVariant = AppThemeVariant.Auto
127131
};
128132

@@ -154,4 +158,9 @@ private IReadOnlyList<KeyboardLayout> GetKeyboardLayouts()
154158

155159
private Version GetAppVersion() =>
156160
Assembly.GetExecutingAssembly()?.GetName().Version ?? new Version(0, 0);
161+
162+
private AppTheme GetDefaultTheme() =>
163+
OperatingSystem.IsMacOS()
164+
? AppTheme.MacOS
165+
: OperatingSystem.IsLinux() ? AppTheme.Simple : AppTheme.Fluent;
157166
}

src/KeyboardSwitch.Settings/KeyboardSwitch.Settings.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<PackageReference Include="Avalonia.Diagnostics" Version="11.3.1" />
2121
<PackageReference Include="Avalonia.ReactiveUI" Version="11.3.1" />
2222
<PackageReference Include="Avalonia.Themes.Simple" Version="11.3.1" />
23-
<PackageReference Include="Devolutions.AvaloniaTheme.MacOS" Version="2025.6.12" />
23+
<PackageReference Include="Devolutions.AvaloniaTheme.MacOS" Version="2025.6.19" />
2424
<PackageReference Include="DynamicData" Version="9.4.1" />
2525
<PackageReference Include="FluentAvaloniaUI" Version="2.3.0" />
2626
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.6" />

test/KeyboardSwitch.Tests/Services/JsonSettingsServiceTests.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -182,11 +182,7 @@ public async Task GetAppSettingsDefault()
182182
Assert.True(settings.ShowUninstalledLayoutsMessage);
183183
Assert.Equal(Version, settings.AppVersion);
184184

185-
var expectedTheme = OperatingSystem.IsMacOS()
186-
? AppTheme.MacOS
187-
: OperatingSystem.IsLinux() ? AppTheme.Simple : AppTheme.Fluent;
188-
189-
Assert.Equal(expectedTheme, settings.AppTheme);
185+
Assert.Equal(this.GetExpectedDefaultTheme(), settings.AppTheme);
190186
Assert.Equal(AppThemeVariant.Auto, settings.AppThemeVariant);
191187

192188
layoutService.Received().GetKeyboardLayouts();
@@ -325,6 +321,10 @@ public async Task GetAppSettingsMigrateVersion()
325321
Assert.True(settings.InstantSwitching);
326322
Assert.True(settings.SwitchLayout);
327323
Assert.True(settings.ShowUninstalledLayoutsMessage);
324+
325+
Assert.Equal(this.GetExpectedDefaultTheme(), settings.AppTheme);
326+
Assert.Equal(AppThemeVariant.Auto, settings.AppThemeVariant);
327+
328328
Assert.Equal(Version, settings.AppVersion);
329329
}
330330

@@ -551,4 +551,9 @@ public async Task SaveAppSettings()
551551
var actualJson = JsonNode.Parse(file.TextContents);
552552
Assert.True(JsonNode.DeepEquals(expectedJson, actualJson));
553553
}
554+
555+
private AppTheme GetExpectedDefaultTheme() =>
556+
OperatingSystem.IsMacOS()
557+
? AppTheme.MacOS
558+
: OperatingSystem.IsLinux() ? AppTheme.Simple : AppTheme.Fluent;
554559
}

0 commit comments

Comments
 (0)