From d9f93c4b6a611ab4fdd666d2a741278d48aa9370 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Mar 2026 17:57:10 +0000 Subject: [PATCH] Introduce StartOptions class for settings path resolution Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> --- .../Services/SettingsService.cs | 18 +++----------- DiscordChatExporter.Gui/StartOptions.cs | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 DiscordChatExporter.Gui/StartOptions.cs diff --git a/DiscordChatExporter.Gui/Services/SettingsService.cs b/DiscordChatExporter.Gui/Services/SettingsService.cs index 326fb722..50581178 100644 --- a/DiscordChatExporter.Gui/Services/SettingsService.cs +++ b/DiscordChatExporter.Gui/Services/SettingsService.cs @@ -1,6 +1,4 @@ -using System; -using System.IO; -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using Cogwheel; using CommunityToolkit.Mvvm.ComponentModel; using DiscordChatExporter.Core.Discord; @@ -12,7 +10,8 @@ using DiscordChatExporter.Gui.Models; namespace DiscordChatExporter.Gui.Services; [ObservableObject] -public partial class SettingsService() : SettingsBase(GetFilePath(), SerializerContext.Default) +public partial class SettingsService() + : SettingsBase(StartOptions.Current.SettingsPath, SerializerContext.Default) { [ObservableProperty] public partial bool IsUkraineSupportMessageEnabled { get; set; } = true; @@ -86,17 +85,6 @@ public partial class SettingsService() : SettingsBase(GetFilePath(), SerializerC } } -public partial class SettingsService -{ - private static string GetFilePath() => - Environment.GetEnvironmentVariable("DISCORDCHATEXPORTER_SETTINGS_PATH") is { } path - && !string.IsNullOrWhiteSpace(path) - ? Path.EndsInDirectorySeparator(path) || Directory.Exists(path) - ? Path.Combine(path, "Settings.dat") - : path - : Path.Combine(AppContext.BaseDirectory, "Settings.dat"); -} - public partial class SettingsService { [JsonSerializable(typeof(SettingsService))] diff --git a/DiscordChatExporter.Gui/StartOptions.cs b/DiscordChatExporter.Gui/StartOptions.cs new file mode 100644 index 00000000..f29a04ea --- /dev/null +++ b/DiscordChatExporter.Gui/StartOptions.cs @@ -0,0 +1,24 @@ +using System; +using System.IO; + +namespace DiscordChatExporter.Gui; + +public partial class StartOptions +{ + public required string SettingsPath { get; init; } +} + +public partial class StartOptions +{ + public static StartOptions Current { get; } = + new() + { + SettingsPath = + Environment.GetEnvironmentVariable("DISCORDCHATEXPORTER_SETTINGS_PATH") is { } path + && !string.IsNullOrWhiteSpace(path) + ? Path.EndsInDirectorySeparator(path) || Directory.Exists(path) + ? Path.Combine(path, "Settings.dat") + : path + : Path.Combine(AppContext.BaseDirectory, "Settings.dat"), + }; +}