Skip to content

Commit 7b4ab0f

Browse files
Fix the serialization of app themes
1 parent 986857c commit 7b4ab0f

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/KeyboardSwitch.Core/Json/KeyboardSwitchJsonContext.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,12 @@ namespace KeyboardSwitch.Core.Json;
44

55
[JsonSerializable(typeof(AppSettings))]
66
[JsonSerializable(typeof(List<string>))]
7-
[JsonSourceGenerationOptions(WriteIndented = true, Converters = [typeof(JsonStringEnumConverter<EventMask>)])]
7+
[JsonSourceGenerationOptions(
8+
WriteIndented = true,
9+
Converters =
10+
[
11+
typeof(JsonStringEnumConverter<EventMask>),
12+
typeof(JsonStringEnumConverter<AppTheme>),
13+
typeof(JsonStringEnumConverter<AppThemeVariant>)
14+
])]
815
internal partial class KeyboardSwitchJsonContext : JsonSerializerContext;

test/KeyboardSwitch.Tests/Services/JsonSettingsServiceTests.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ public sealed class JsonSettingsServiceTests(ITestOutputHelper output)
4545
"SwitchLayout": true,
4646
"ShowUninstalledLayoutsMessage": true,
4747
"UseXsel": false,
48-
"AppVersion": "{{Version}}"
48+
"AppVersion": "{{Version}}",
49+
"AppTheme": "MacOS",
50+
"AppThemeVariant": "Dark"
4951
}
5052
""";
5153

@@ -97,6 +99,9 @@ public async Task GetAppSettingsFile()
9799
Assert.True(settings.SwitchLayout);
98100
Assert.True(settings.ShowUninstalledLayoutsMessage);
99101
Assert.Equal(Version, settings.AppVersion);
102+
103+
Assert.Equal(AppTheme.MacOS, settings.AppTheme);
104+
Assert.Equal(AppThemeVariant.Dark, settings.AppThemeVariant);
100105
}
101106

102107
[Fact(DisplayName = "An exception should be thrown if the settings file is not found in strict mode")]
@@ -177,6 +182,9 @@ public async Task GetAppSettingsDefault()
177182
Assert.True(settings.ShowUninstalledLayoutsMessage);
178183
Assert.Equal(Version, settings.AppVersion);
179184

185+
Assert.Equal(AppTheme.Fluent, settings.AppTheme);
186+
Assert.Equal(AppThemeVariant.Auto, settings.AppThemeVariant);
187+
180188
layoutService.Received().GetKeyboardLayouts();
181189
autoConfigService.Received().CreateCharMappings(
182190
Arg.Is<IEnumerable<KeyboardLayout>>(l => layouts.SequenceEqual(l)));
@@ -521,7 +529,9 @@ public async Task SaveAppSettings()
521529
SwitchLayout = true,
522530
ShowUninstalledLayoutsMessage = true,
523531
UseXsel = false,
524-
AppVersion = Version
532+
AppVersion = Version,
533+
AppTheme = AppTheme.MacOS,
534+
AppThemeVariant = AppThemeVariant.Dark
525535
};
526536

527537
// Act

0 commit comments

Comments
 (0)