Move configuration data classes to handlers

Rename the database and text configuration managers as handlers, move configuration data classes into Handler.Data, and relocate ProfileExManager. Update references across applications and tests.
This commit is contained in:
2dust
2026-11-14 20:35:50 +08:00
parent 5292568150
commit 2c90ed1a94
88 changed files with 251 additions and 251 deletions
+1 -1
View File
@@ -21,9 +21,9 @@ global using ServiceLib.Handler;
global using ServiceLib.Handler.Builder; global using ServiceLib.Handler.Builder;
global using ServiceLib.Handler.Fmt; global using ServiceLib.Handler.Fmt;
global using ServiceLib.Handler.SysProxy; global using ServiceLib.Handler.SysProxy;
global using ServiceLib.Handler.Data;
global using ServiceLib.Helper; global using ServiceLib.Helper;
global using ServiceLib.Manager; global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.CoreConfigs; global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Configs; global using ServiceLib.Models.Configs;
global using ServiceLib.Models.Dto; global using ServiceLib.Models.Dto;
@@ -32,7 +32,7 @@ public class ConfigHandlerCustomSubscriptionTests
oldProfile.IsSub = true; oldProfile.IsSub = true;
await SQLiteHelper.Instance.InsertAsync(oldProfile); await SQLiteHelper.Instance.InsertAsync(oldProfile);
var count = await ConfigDbManager.AddBatchServers(config, FullXrayConfigs, subId, true); var count = await ConfigDbHandler.AddBatchServers(config, FullXrayConfigs, subId, true);
var profiles = await ConfigDbQuery.ProfileItems(subId) ?? []; var profiles = await ConfigDbQuery.ProfileItems(subId) ?? [];
await count.Should().BeEqualTo(2); await count.Should().BeEqualTo(2);
@@ -66,7 +66,7 @@ public class ConfigHandlerCustomSubscriptionTests
await SQLiteHelper.Instance.InsertAsync(existing); await SQLiteHelper.Instance.InsertAsync(existing);
var invalidSubscription = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("not a valid profile")); var invalidSubscription = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("not a valid profile"));
var count = await ConfigDbManager.AddBatchServers(config, invalidSubscription, subId, true); var count = await ConfigDbHandler.AddBatchServers(config, invalidSubscription, subId, true);
var profiles = await ConfigDbQuery.ProfileItems(subId) ?? []; var profiles = await ConfigDbQuery.ProfileItems(subId) ?? [];
await (count < 1).Should().BeTrue(); await (count < 1).Should().BeTrue();
+1 -1
View File
@@ -31,9 +31,9 @@ global using ServiceLib.Handler;
global using ServiceLib.Handler.Builder; global using ServiceLib.Handler.Builder;
global using ServiceLib.Handler.Fmt; global using ServiceLib.Handler.Fmt;
global using ServiceLib.Handler.SysProxy; global using ServiceLib.Handler.SysProxy;
global using ServiceLib.Handler.Data;
global using ServiceLib.Helper; global using ServiceLib.Helper;
global using ServiceLib.Manager; global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.Configs; global using ServiceLib.Models.Configs;
global using ServiceLib.Models.CoreConfigs; global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Dto; global using ServiceLib.Models.Dto;
@@ -46,7 +46,7 @@ public class CoreConfigContextBuilder
SimpleDnsItem = config.SimpleDNSItem, SimpleDnsItem = config.SimpleDNSItem,
ProtectDomainList = [], ProtectDomainList = [],
RawDnsItem = await ConfigDbQuery.GetDNSItem(coreType), RawDnsItem = await ConfigDbQuery.GetDNSItem(coreType),
RoutingItem = await ConfigDbManager.GetDefaultRouting(config), RoutingItem = await ConfigDbHandler.GetDefaultRouting(config),
IsWindows = Utils.IsWindows(), IsWindows = Utils.IsWindows(),
IsMacOS = Utils.IsMacOS(), IsMacOS = Utils.IsMacOS(),
IsLinux = Utils.IsLinux(), IsLinux = Utils.IsLinux(),
@@ -204,7 +204,7 @@ public class CoreConfigContextBuilder
var node = nodeContext.Node; var node = nodeContext.Node;
var coreType = AppManager.Instance.GetCoreType(node, node.ConfigType); var coreType = AppManager.Instance.GetCoreType(node, node.ConfigType);
var preSocksItem = ConfigDbManager.GetPreSocksItem(config, node, coreType); var preSocksItem = ConfigDbHandler.GetPreSocksItem(config, node, coreType);
if (preSocksItem != null) if (preSocksItem != null)
{ {
var preSocksResult = await Build(nodeContext.AppConfig, preSocksItem); var preSocksResult = await Build(nodeContext.AppConfig, preSocksItem);
@@ -79,7 +79,7 @@ public static class ConnectionHandler
public static async Task<int> GetRealPingTime(HttpClient client, CancellationToken cancellationToken = default) public static async Task<int> GetRealPingTime(HttpClient client, CancellationToken cancellationToken = default)
{ {
var url = ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl; var url = ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl;
var responseTime = -1; var responseTime = -1;
try try
{ {
@@ -114,7 +114,7 @@ public static class ConnectionHandler
{ {
try try
{ {
var url = ConfigTextManager.Config.SpeedTestItem.IPAPIUrl; var url = ConfigTextHandler.Config.SpeedTestItem.IPAPIUrl;
if (url.IsNullOrEmpty()) if (url.IsNullOrEmpty())
{ {
return null; return null;
@@ -9,7 +9,7 @@ public static class CoreConfigHandler
public static async Task<RetResult> GenerateClientConfig(CoreConfigContext context, string? fileName) public static async Task<RetResult> GenerateClientConfig(CoreConfigContext context, string? fileName)
{ {
var config = ConfigTextManager.Config; var config = ConfigTextHandler.Config;
var result = new RetResult(); var result = new RetResult();
var node = context.Node; var node = context.Node;
@@ -1,14 +1,14 @@
namespace ServiceLib.Manager.Data; namespace ServiceLib.Handler.Data;
public static class ConfigDbManager public static class ConfigDbHandler
{ {
private static readonly string _tag = "ConfigDbManager"; private static readonly string _tag = "ConfigDbHandler";
private static Config CurrentConfig => ConfigState.Instance.Current; private static Config CurrentConfig => ConfigState.Instance.Current;
private static async Task<int> SaveConfig() private static async Task<int> SaveConfig()
{ {
return await ConfigTextManager.SaveConfig(); return await ConfigTextHandler.SaveConfig();
} }
#region Server #region Server
@@ -2011,7 +2011,7 @@ public static class ConfigDbManager
var existItem = FindMatchedProfileItem(lstSub, activeProfile); var existItem = FindMatchedProfileItem(lstSub, activeProfile);
if (existItem != null) if (existItem != null)
{ {
await ConfigDbManager.SetDefaultServerIndex(config, existItem.IndexId); await ConfigDbHandler.SetDefaultServerIndex(config, existItem.IndexId);
} }
} }
@@ -2504,7 +2504,7 @@ public static class ConfigDbManager
var lockItem = items?.FirstOrDefault(t => t.Locked == true); var lockItem = items?.FirstOrDefault(t => t.Locked == true);
if (lockItem != null) if (lockItem != null)
{ {
await ConfigDbManager.RemoveRoutingItem(lockItem); await ConfigDbHandler.RemoveRoutingItem(lockItem);
items = await ConfigDbQuery.RoutingItems(); items = await ConfigDbQuery.RoutingItems();
} }
@@ -3009,7 +3009,7 @@ public static class ConfigDbManager
private static async Task<int> MigrateProfileExtraV2ToV3Sub(List<ProfileItem> batch) private static async Task<int> MigrateProfileExtraV2ToV3Sub(List<ProfileItem> batch)
{ {
var updateProfileItems = new List<ProfileItem>(); var updateProfileItems = new List<ProfileItem>();
var config = ConfigTextManager.Config; var config = ConfigTextHandler.Config;
foreach (var item in batch) foreach (var item in batch)
{ {
@@ -1,4 +1,4 @@
namespace ServiceLib.Manager.Data; namespace ServiceLib.Handler.Data;
public class ConfigDbQuery public class ConfigDbQuery
{ {
@@ -1,4 +1,4 @@
namespace ServiceLib.Manager.Data; namespace ServiceLib.Handler.Data;
public sealed class ConfigState public sealed class ConfigState
{ {
@@ -1,9 +1,9 @@
namespace ServiceLib.Manager.Data; namespace ServiceLib.Handler.Data;
public static class ConfigTextManager public static class ConfigTextHandler
{ {
private static readonly string _configRes = Global.ConfigFileName; private static readonly string _configRes = Global.ConfigFileName;
private static readonly string _tag = "ConfigTextManager"; private static readonly string _tag = "ConfigTextHandler";
public static Config Config public static Config Config
{ {
@@ -145,7 +145,7 @@ public static class ConfigTextManager
config.ConstItem ??= new ConstItem(); config.ConstItem ??= new ConstItem();
config.SimpleDNSItem ??= ConfigDbManager.InitBuiltinSimpleDNS(); config.SimpleDNSItem ??= ConfigDbHandler.InitBuiltinSimpleDNS();
config.SimpleDNSItem.BlockAAAAQuery ??= false; config.SimpleDNSItem.BlockAAAAQuery ??= false;
config.SimpleDNSItem.FakeIPRange ??= Global.FakeIPRanges.FirstOrDefault(); config.SimpleDNSItem.FakeIPRange ??= Global.FakeIPRanges.FirstOrDefault();
config.SimpleDNSItem.FakeIPv6 ??= false; config.SimpleDNSItem.FakeIPv6 ??= false;
@@ -106,7 +106,7 @@ public class SubscriptionHandler(
await updateFunc?.Invoke(false, $"{hashCode}{ResUI.MsgStartParsingSubscription}"); await updateFunc?.Invoke(false, $"{hashCode}{ResUI.MsgStartParsingSubscription}");
// Add servers to configuration // Add servers to configuration
var ret = await ConfigDbManager.AddBatchServers(_config, result, id, true); var ret = await ConfigDbHandler.AddBatchServers(_config, result, id, true);
if (ret <= 0) if (ret <= 0)
{ {
Logging.SaveLog("FailedImportSubscription"); Logging.SaveLog("FailedImportSubscription");
@@ -19,7 +19,7 @@ public static class ProxySettingLinux
private static async Task ExecCmd(List<string> args) private static async Task ExecCmd(List<string> args)
{ {
var customSystemProxyScriptPath = ConfigTextManager.Config.SystemProxyItem?.CustomSystemProxyScriptPath; var customSystemProxyScriptPath = ConfigTextHandler.Config.SystemProxyItem?.CustomSystemProxyScriptPath;
var fileName = (customSystemProxyScriptPath.IsNotEmpty() && File.Exists(customSystemProxyScriptPath)) var fileName = (customSystemProxyScriptPath.IsNotEmpty() && File.Exists(customSystemProxyScriptPath))
? customSystemProxyScriptPath ? customSystemProxyScriptPath
: await FileUtils.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetLinuxShellFileName), false); : await FileUtils.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetLinuxShellFileName), false);
@@ -24,7 +24,7 @@ public static class ProxySettingOSX
private static async Task ExecCmd(List<string> args) private static async Task ExecCmd(List<string> args)
{ {
var customSystemProxyScriptPath = ConfigTextManager.Config.SystemProxyItem?.CustomSystemProxyScriptPath; var customSystemProxyScriptPath = ConfigTextHandler.Config.SystemProxyItem?.CustomSystemProxyScriptPath;
var fileName = (customSystemProxyScriptPath.IsNotEmpty() && File.Exists(customSystemProxyScriptPath)) var fileName = (customSystemProxyScriptPath.IsNotEmpty() && File.Exists(customSystemProxyScriptPath))
? customSystemProxyScriptPath ? customSystemProxyScriptPath
: await FileUtils.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetOSXShellFileName), false); : await FileUtils.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetOSXShellFileName), false);
+3 -3
View File
@@ -67,7 +67,7 @@ public sealed class AppManager
} }
Logging.Setup(); Logging.Setup();
_config = ConfigTextManager.Init(); _config = ConfigTextHandler.Init();
if (_config == null) if (_config == null)
{ {
return false; return false;
@@ -104,7 +104,7 @@ public sealed class AppManager
Task.Run(async () => Task.Run(async () =>
{ {
await ConfigDbManager.MigrateProfileExtra(); await ConfigDbHandler.MigrateProfileExtra();
}).Wait(); }).Wait();
return true; return true;
@@ -127,7 +127,7 @@ public sealed class AppManager
AppEvents.AppExitRequested.Publish(); AppEvents.AppExitRequested.Publish();
await Task.Delay(50); //Wait for AppExitRequested to be processed await Task.Delay(50); //Wait for AppExitRequested to be processed
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
await ProfileExManager.Instance.SaveTo(); await ProfileExManager.Instance.SaveTo();
await StatisticsManager.Instance.SaveTo(); await StatisticsManager.Instance.SaveTo();
await CoreManager.Instance.CoreStop(); await CoreManager.Instance.CoreStop();
+2 -2
View File
@@ -82,7 +82,7 @@ public sealed class ClashApiManager
private async Task<int> TestProxyDelay(string name) private async Task<int> TestProxyDelay(string name)
{ {
var url = $"{ApiUrl}/proxies/{Utils.UrlEncode(name)}/delay?timeout=10000&url=" + var url = $"{ApiUrl}/proxies/{Utils.UrlEncode(name)}/delay?timeout=10000&url=" +
Utils.UrlEncode(ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl); Utils.UrlEncode(ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl);
return await SendTestRequest(url); return await SendTestRequest(url);
} }
@@ -90,7 +90,7 @@ public sealed class ClashApiManager
{ {
var url = var url =
$"{ApiUrl}/providers/proxies/{Utils.UrlEncode(providerName)}/{Utils.UrlEncode(name)}/healthcheck?timeout=10000&url=" + $"{ApiUrl}/providers/proxies/{Utils.UrlEncode(providerName)}/{Utils.UrlEncode(name)}/healthcheck?timeout=10000&url=" +
Utils.UrlEncode(ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl); Utils.UrlEncode(ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl);
return await SendTestRequest(url); return await SendTestRequest(url);
} }
+1 -1
View File
@@ -31,7 +31,7 @@ public class PacManager
private async Task<byte[]> InitText(int httpPort) private async Task<byte[]> InitText(int httpPort)
{ {
var customSystemProxyPacPath = ConfigTextManager.Config.SystemProxyItem.CustomSystemProxyPacPath; var customSystemProxyPacPath = ConfigTextHandler.Config.SystemProxyItem.CustomSystemProxyPacPath;
var fileName = customSystemProxyPacPath.IsNotEmpty() && File.Exists(customSystemProxyPacPath) var fileName = customSystemProxyPacPath.IsNotEmpty() && File.Exists(customSystemProxyPacPath)
? customSystemProxyPacPath ? customSystemProxyPacPath
: Path.Combine(Utils.GetConfigPath(), "pac.txt"); : Path.Combine(Utils.GetConfigPath(), "pac.txt");
@@ -1,4 +1,4 @@
namespace ServiceLib.Manager.Data; namespace ServiceLib.Manager;
public class ProfileExManager public class ProfileExManager
{ {
+2 -2
View File
@@ -42,7 +42,7 @@ public class TaskManager
try try
{ {
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
await ProfileExManager.Instance.SaveTo(); await ProfileExManager.Instance.SaveTo();
} }
catch (Exception ex) catch (Exception ex)
@@ -113,7 +113,7 @@ public class TaskManager
}); });
await handler.UpdateProcess(item.Id); await handler.UpdateProcess(item.Id);
item.UpdateTime = updateTime; item.UpdateTime = updateTime;
await ConfigDbManager.AddSubItem(_config, item); await ConfigDbHandler.AddSubItem(_config, item);
await Task.Delay(1000); await Task.Delay(1000);
} }
} }
+1 -1
View File
@@ -16,7 +16,7 @@ public sealed class WebDavManager
public WebDavManager() public WebDavManager()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
} }
private async Task<bool> GetClient() private async Task<bool> GetClient()
@@ -47,7 +47,7 @@ public partial class CoreConfigV2rayService
subjectSelector = [baseTagName], subjectSelector = [baseTagName],
pingConfig = new() pingConfig = new()
{ {
destination = ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl, destination = ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl,
interval = "5m", interval = "5m",
timeout = "30s", timeout = "30s",
sampling = 2, sampling = 2,
@@ -68,7 +68,7 @@ public partial class CoreConfigV2rayService
_coreConfig.observatory = new Observatory4Ray _coreConfig.observatory = new Observatory4Ray
{ {
subjectSelector = [baseTagName], subjectSelector = [baseTagName],
probeUrl = ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl, probeUrl = ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl,
probeInterval = "3m", probeInterval = "3m",
enableConcurrency = true, enableConcurrency = true,
}; };
@@ -43,7 +43,7 @@ public partial class AddGroupServerViewModel : MyReactiveObject, ICloseable
public AddGroupServerViewModel(ProfileItem profileItem) public AddGroupServerViewModel(ProfileItem profileItem)
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue( var canEditRemove = this.WhenAnyValue(
x => x.SelectedChild, x => x.SelectedChild,
@@ -245,7 +245,7 @@ public partial class AddGroupServerViewModel : MyReactiveObject, ICloseable
SelectedSource.SetProtocolExtra(protocolExtra); SelectedSource.SetProtocolExtra(protocolExtra);
if (await ConfigDbManager.AddServerCommon(_config, SelectedSource) == 0) if (await ConfigDbHandler.AddServerCommon(_config, SelectedSource) == 0)
{ {
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty); RequestClose?.Invoke(this, EventArgs.Empty);
@@ -24,7 +24,7 @@ public partial class AddServer2ViewModel : MyReactiveObject, ICloseable
public AddServer2ViewModel(ProfileItem profileItem) public AddServer2ViewModel(ProfileItem profileItem)
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
BrowseServerCmd = ReactiveCommand.CreateFromTask(async () => BrowseServerCmd = ReactiveCommand.CreateFromTask(async () =>
{ {
@@ -71,7 +71,7 @@ public partial class AddServer2ViewModel : MyReactiveObject, ICloseable
IsSingboxEndpoint = IsSingboxEndpoint ? true : null, IsSingboxEndpoint = IsSingboxEndpoint ? true : null,
}); });
if (await ConfigDbManager.EditCustomServer(_config, SelectedSource) == 0) if (await ConfigDbHandler.EditCustomServer(_config, SelectedSource) == 0)
{ {
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty); RequestClose?.Invoke(this, EventArgs.Empty);
@@ -92,7 +92,7 @@ public partial class AddServer2ViewModel : MyReactiveObject, ICloseable
var item = await ConfigDbQuery.GetProfileItem(SelectedSource.IndexId); var item = await ConfigDbQuery.GetProfileItem(SelectedSource.IndexId);
item ??= SelectedSource; item ??= SelectedSource;
item.Address = fileName; item.Address = fileName;
var result = item.ConfigType == EConfigType.Outbound ? await ConfigDbManager.AddCustomOutboundServer(_config, item, false) : await ConfigDbManager.AddCustomServer(_config, item, false); var result = item.ConfigType == EConfigType.Outbound ? await ConfigDbHandler.AddCustomOutboundServer(_config, item, false) : await ConfigDbHandler.AddCustomServer(_config, item, false);
if (result == 0) if (result == 0)
{ {
NoticeManager.Instance.Enqueue(ResUI.SuccessfullyImportedCustomServer); NoticeManager.Instance.Enqueue(ResUI.SuccessfullyImportedCustomServer);
@@ -319,7 +319,7 @@ public partial class AddServerViewModel : MyReactiveObject, ICloseable
public AddServerViewModel(ProfileItem profileItem) public AddServerViewModel(ProfileItem profileItem)
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
FetchCertCmd = ReactiveCommand.CreateFromTask(async () => FetchCertCmd = ReactiveCommand.CreateFromTask(async () =>
{ {
@@ -594,7 +594,7 @@ public partial class AddServerViewModel : MyReactiveObject, ICloseable
}); });
SelectedSource.SetTransportExtra(transport); SelectedSource.SetTransportExtra(transport);
if (await ConfigDbManager.AddServer(_config, SelectedSource) == 0) if (await ConfigDbHandler.AddServer(_config, SelectedSource) == 0)
{ {
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty); RequestClose?.Invoke(this, EventArgs.Empty);
@@ -19,7 +19,7 @@ public partial class BackupAndRestoreViewModel : MyReactiveObject
public BackupAndRestoreViewModel() public BackupAndRestoreViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
WebDavCheckCmd = ReactiveCommand.CreateFromTask(async () => WebDavCheckCmd = ReactiveCommand.CreateFromTask(async () =>
{ {
@@ -46,7 +46,7 @@ public partial class BackupAndRestoreViewModel : MyReactiveObject
{ {
DisplayOperationMsg(); DisplayOperationMsg();
_config.WebDavItem = SelectedSource; _config.WebDavItem = SelectedSource;
_ = await ConfigTextManager.SaveConfig(); _ = await ConfigTextHandler.SaveConfig();
var result = await WebDavManager.Instance.CheckConnection(); var result = await WebDavManager.Instance.CheckConnection();
if (result) if (result)
@@ -19,7 +19,7 @@ public partial class CheckUpdateViewModel : MyReactiveObject
public CheckUpdateViewModel() public CheckUpdateViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
CheckUpdateCmd = ReactiveCommand.CreateFromTask(CheckUpdate); CheckUpdateCmd = ReactiveCommand.CreateFromTask(CheckUpdate);
CheckUpdateCmd.ThrownExceptions.Subscribe(ex => CheckUpdateCmd.ThrownExceptions.Subscribe(ex =>
@@ -126,7 +126,7 @@ public partial class CheckUpdateViewModel : MyReactiveObject
.Select(t => t.CoreTypeForStorage) .Select(t => t.CoreTypeForStorage)
.ToList(); .ToList();
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
private async Task CheckOnly() private async Task CheckOnly()
@@ -4,7 +4,7 @@ public partial class ClashConnectionsViewModel : MyReactiveObject
{ {
public ClashConnectionsViewModel() public ClashConnectionsViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
AutoRefresh = _config.ClashUIItem.ConnectionsAutoRefresh; AutoRefresh = _config.ClashUIItem.ConnectionsAutoRefresh;
var canEditRemove = this.WhenAnyValue( var canEditRemove = this.WhenAnyValue(
@@ -7,7 +7,7 @@ public partial class ClashProxiesViewModel : MyReactiveObject
public ClashProxiesViewModel() public ClashProxiesViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
ProxiesReloadCmd = ReactiveCommand.CreateFromTask(async () => ProxiesReloadCmd = ReactiveCommand.CreateFromTask(async () =>
{ {
@@ -48,7 +48,7 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
public DNSSettingViewModel() public DNSSettingViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
SaveCmd = ReactiveCommand.CreateFromTask(SaveSettingAsync); SaveCmd = ReactiveCommand.CreateFromTask(SaveSettingAsync);
ImportDefConfig4V2rayCompatibleCmd = ReactiveCommand.CreateFromTask(async () => ImportDefConfig4V2rayCompatibleCmd = ReactiveCommand.CreateFromTask(async () =>
@@ -82,7 +82,7 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
private async Task Init() private async Task Init()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
var item = _config.SimpleDNSItem; var item = _config.SimpleDNSItem;
UseSystemHosts = item.UseSystemHosts ?? false; UseSystemHosts = item.UseSystemHosts ?? false;
AddCommonHosts = item.AddCommonHosts ?? false; AddCommonHosts = item.AddCommonHosts ?? false;
@@ -207,7 +207,7 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
item1.UseSystemHosts = UseSystemHostsCompatible; item1.UseSystemHosts = UseSystemHostsCompatible;
item1.NormalDNS = NormalDNSCompatible; item1.NormalDNS = NormalDNSCompatible;
item1.TunDNS = TunDNSCompatible; item1.TunDNS = TunDNSCompatible;
await ConfigDbManager.SaveDNSItems(_config, item1); await ConfigDbHandler.SaveDNSItems(_config, item1);
var item2 = await ConfigDbQuery.GetDNSItem(ECoreType.sing_box); var item2 = await ConfigDbQuery.GetDNSItem(ECoreType.sing_box);
item2.Enabled = SBCustomDNSEnableCompatible; item2.Enabled = SBCustomDNSEnableCompatible;
@@ -215,9 +215,9 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
item2.DomainDNSAddress = DomainDNSAddress2Compatible; item2.DomainDNSAddress = DomainDNSAddress2Compatible;
item2.NormalDNS = JsonUtils.Serialize(JsonUtils.Deserialize<Dns4Sbox>(NormalDNS2Compatible)); item2.NormalDNS = JsonUtils.Serialize(JsonUtils.Deserialize<Dns4Sbox>(NormalDNS2Compatible));
item2.TunDNS = JsonUtils.Serialize(JsonUtils.Deserialize<Dns4Sbox>(TunDNS2Compatible)); item2.TunDNS = JsonUtils.Serialize(JsonUtils.Deserialize<Dns4Sbox>(TunDNS2Compatible));
await ConfigDbManager.SaveDNSItems(_config, item2); await ConfigDbHandler.SaveDNSItems(_config, item2);
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
RequestClose?.Invoke(this, EventArgs.Empty); RequestClose?.Invoke(this, EventArgs.Empty);
} }
} }
@@ -44,7 +44,7 @@ public partial class FullConfigTemplateViewModel : MyReactiveObject, ICloseable
public FullConfigTemplateViewModel() public FullConfigTemplateViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
SaveCmd = ReactiveCommand.CreateFromTask(async () => SaveCmd = ReactiveCommand.CreateFromTask(async () =>
{ {
await SaveSettingAsync(); await SaveSettingAsync();
@@ -104,7 +104,7 @@ public partial class FullConfigTemplateViewModel : MyReactiveObject, ICloseable
item.AddProxyOnly = AddProxyOnly4Ray; item.AddProxyOnly = AddProxyOnly4Ray;
item.ProxyDetour = ProxyDetour4Ray; item.ProxyDetour = ProxyDetour4Ray;
await ConfigDbManager.SaveFullConfigTemplate(_config, item); await ConfigDbHandler.SaveFullConfigTemplate(_config, item);
return true; return true;
} }
@@ -122,7 +122,7 @@ public partial class FullConfigTemplateViewModel : MyReactiveObject, ICloseable
item.AddProxyOnly = AddProxyOnly4Singbox; item.AddProxyOnly = AddProxyOnly4Singbox;
item.ProxyDetour = ProxyDetour4Singbox; item.ProxyDetour = ProxyDetour4Singbox;
await ConfigDbManager.SaveFullConfigTemplate(_config, item); await ConfigDbHandler.SaveFullConfigTemplate(_config, item);
return true; return true;
} }
} }
@@ -12,7 +12,7 @@ public class GlobalHotkeySettingViewModel : MyReactiveObject, ICloseable
public GlobalHotkeySettingViewModel() public GlobalHotkeySettingViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
_globalHotkeys = JsonUtils.DeepCopy(_config.GlobalHotkeys); _globalHotkeys = JsonUtils.DeepCopy(_config.GlobalHotkeys);
@@ -52,7 +52,7 @@ public class GlobalHotkeySettingViewModel : MyReactiveObject, ICloseable
{ {
_config.GlobalHotkeys = _globalHotkeys; _config.GlobalHotkeys = _globalHotkeys;
if (await ConfigTextManager.SaveConfig() == 0) if (await ConfigTextHandler.SaveConfig() == 0)
{ {
RequestClose?.Invoke(this, EventArgs.Empty); RequestClose?.Invoke(this, EventArgs.Empty);
} }
@@ -90,7 +90,7 @@ public partial class MainWindowViewModel : MyReactiveObject
public MainWindowViewModel() public MainWindowViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
BlIsWindows = Utils.IsWindows(); BlIsWindows = Utils.IsWindows();
MainGirdOrientation = _config.UiItem.MainGirdOrientation; MainGirdOrientation = _config.UiItem.MainGirdOrientation;
@@ -331,8 +331,8 @@ public partial class MainWindowViewModel : MyReactiveObject
} }
//await ConfigHandler.InitBuiltinRouting(_config); //await ConfigHandler.InitBuiltinRouting(_config);
await ConfigDbManager.InitBuiltinDNS(_config); await ConfigDbHandler.InitBuiltinDNS(_config);
await ConfigDbManager.InitBuiltinFullConfigTemplate(_config); await ConfigDbHandler.InitBuiltinFullConfigTemplate(_config);
await ProfileExManager.Instance.Init(); await ProfileExManager.Instance.Init();
await CoreManager.Instance.Init(_config, UpdateHandler); await CoreManager.Instance.Init(_config, UpdateHandler);
await CertPemManager.Instance.Init(_config); await CertPemManager.Instance.Init(_config);
@@ -499,7 +499,7 @@ public partial class MainWindowViewModel : MyReactiveObject
} }
stringData = result; stringData = result;
} }
var ret = await ConfigDbManager.AddBatchServers(_config, stringData, _config.SubIndexId, false); var ret = await ConfigDbHandler.AddBatchServers(_config, stringData, _config.SubIndexId, false);
if (ret > 0) if (ret > 0)
{ {
await RefreshSubscriptions(); await RefreshSubscriptions();
@@ -549,7 +549,7 @@ public partial class MainWindowViewModel : MyReactiveObject
} }
else else
{ {
var ret = await ConfigDbManager.AddBatchServers(_config, result, _config.SubIndexId, false); var ret = await ConfigDbHandler.AddBatchServers(_config, result, _config.SubIndexId, false);
if (ret > 0) if (ret > 0)
{ {
await RefreshSubscriptions(); await RefreshSubscriptions();
@@ -610,7 +610,7 @@ public partial class MainWindowViewModel : MyReactiveObject
var ret = await AppManager.Instance.WindowDialog.ShowDialogAsync(routingSettingViewModel); var ret = await AppManager.Instance.WindowDialog.ShowDialogAsync(routingSettingViewModel);
if (ret == true) if (ret == true)
{ {
await ConfigDbManager.InitBuiltinRouting(_config); await ConfigDbHandler.InitBuiltinRouting(_config);
RxSchedulers.MainThreadScheduler.Schedule(async () => RxSchedulers.MainThreadScheduler.Schedule(async () =>
{ {
await StatusBarViewModel.RefreshRoutingsMenu(); await StatusBarViewModel.RefreshRoutingsMenu();
@@ -696,7 +696,7 @@ public partial class MainWindowViewModel : MyReactiveObject
TabMainSelectedIndex = 0; TabMainSelectedIndex = 0;
} }
}); });
var profileItem = await ConfigDbManager.GetDefaultServer(_config); var profileItem = await ConfigDbHandler.GetDefaultServer(_config);
if (profileItem == null) if (profileItem == null)
{ {
NoticeManager.Instance.Enqueue(ResUI.CheckServerSettings); NoticeManager.Instance.Enqueue(ResUI.CheckServerSettings);
@@ -788,14 +788,14 @@ public partial class MainWindowViewModel : MyReactiveObject
public async Task ApplyRegionalPreset(EPresetType type) public async Task ApplyRegionalPreset(EPresetType type)
{ {
await ConfigDbManager.ApplyRegionalPreset(_config, type); await ConfigDbHandler.ApplyRegionalPreset(_config, type);
await ConfigDbManager.InitRouting(_config); await ConfigDbHandler.InitRouting(_config);
RxSchedulers.MainThreadScheduler.Schedule(async () => RxSchedulers.MainThreadScheduler.Schedule(async () =>
{ {
await StatusBarViewModel.RefreshRoutingsMenu(); await StatusBarViewModel.RefreshRoutingsMenu();
}); });
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
using var downloadService = await DownloadService.CreateDownloadServiceWithCheck(); using var downloadService = await DownloadService.CreateDownloadServiceWithCheck();
await new UpdateService(downloadService, _config, UpdateTaskHandler).UpdateGeoFileAll(); await new UpdateService(downloadService, _config, UpdateTaskHandler).UpdateGeoFileAll();
await Reload(); await Reload();
+1 -1
View File
@@ -16,7 +16,7 @@ public partial class MsgViewModel : MyReactiveObject
public MsgViewModel() public MsgViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
MsgFilter = _config.MsgUIItem.MainMsgFilter ?? string.Empty; MsgFilter = _config.MsgUIItem.MainMsgFilter ?? string.Empty;
AutoRefresh = _config.MsgUIItem.AutoRefresh ?? true; AutoRefresh = _config.MsgUIItem.AutoRefresh ?? true;
@@ -124,7 +124,7 @@ public partial class OptionSettingViewModel : MyReactiveObject, ICloseable
public OptionSettingViewModel() public OptionSettingViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
BlIsWindows = Utils.IsWindows(); BlIsWindows = Utils.IsWindows();
BlIsLinux = Utils.IsLinux(); BlIsLinux = Utils.IsLinux();
BlIsIsMacOS = Utils.IsMacOS(); BlIsIsMacOS = Utils.IsMacOS();
@@ -407,7 +407,7 @@ public partial class OptionSettingViewModel : MyReactiveObject, ICloseable
//coreType //coreType
await SaveCoreType(); await SaveCoreType();
if (await ConfigTextManager.SaveConfig() == 0) if (await ConfigTextHandler.SaveConfig() == 0)
{ {
await AutoStartupHandler.UpdateTask(_config); await AutoStartupHandler.UpdateTask(_config);
AppManager.Instance.Reset(); AppManager.Instance.Reset();
@@ -51,7 +51,7 @@ public partial class ProfilesSelectViewModel : MyReactiveObject, ICloseable
public ProfilesSelectViewModel() public ProfilesSelectViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
_subIndexId = _config.SubIndexId ?? string.Empty; _subIndexId = _config.SubIndexId ?? string.Empty;
#region WhenAnyValue && ReactiveCommand #region WhenAnyValue && ReactiveCommand
@@ -96,7 +96,7 @@ public partial class ProfilesViewModel : MyReactiveObject
public ProfilesViewModel() public ProfilesViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
#region WhenAnyValue && ReactiveCommand #region WhenAnyValue && ReactiveCommand
@@ -401,7 +401,7 @@ public partial class ProfilesViewModel : MyReactiveObject
{ {
var lstModel = await ConfigDbQuery.ProfileModels(_config.SubIndexId, filter); var lstModel = await ConfigDbQuery.ProfileModels(_config.SubIndexId, filter);
await ConfigDbManager.SetDefaultServer(_config, lstModel); await ConfigDbHandler.SetDefaultServer(_config, lstModel);
var lstServerStat = (_config.GuiItem.EnableStatistics ? StatisticsManager.Instance.ServerStat : null) ?? []; var lstServerStat = (_config.GuiItem.EnableStatistics ? StatisticsManager.Instance.ServerStat : null) ?? [];
var lstProfileExs = await ProfileExManager.Instance.GetProfileExs(); var lstProfileExs = await ProfileExManager.Instance.GetProfileExs();
@@ -516,7 +516,7 @@ public partial class ProfilesViewModel : MyReactiveObject
} }
var exists = lstSelected.Exists(t => t.IndexId == _config.IndexId); var exists = lstSelected.Exists(t => t.IndexId == _config.IndexId);
await ConfigDbManager.RemoveServers(_config, lstSelected); await ConfigDbHandler.RemoveServers(_config, lstSelected);
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
if (lstSelected.Count == ProfileItems.Count) if (lstSelected.Count == ProfileItems.Count)
{ {
@@ -536,7 +536,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return; return;
} }
var tuple = await ConfigDbManager.DedupServerList(_config, _config.SubIndexId); var tuple = await ConfigDbHandler.DedupServerList(_config, _config.SubIndexId);
if (tuple.Item1 > 0 || tuple.Item2 > 0) if (tuple.Item1 > 0 || tuple.Item2 > 0)
{ {
await RefreshServers(); await RefreshServers();
@@ -552,7 +552,7 @@ public partial class ProfilesViewModel : MyReactiveObject
{ {
return; return;
} }
if (await ConfigDbManager.CopyServer(_config, lstSelected) == 0) if (await ConfigDbHandler.CopyServer(_config, lstSelected) == 0)
{ {
await RefreshServers(); await RefreshServers();
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
@@ -585,7 +585,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return; return;
} }
if (await ConfigDbManager.SetDefaultServerIndex(_config, indexId) == 0) if (await ConfigDbHandler.SetDefaultServerIndex(_config, indexId) == 0)
{ {
await RefreshServers(); await RefreshServers();
Reload(); Reload();
@@ -611,7 +611,7 @@ public partial class ProfilesViewModel : MyReactiveObject
private async Task GenGroupAllServer() private async Task GenGroupAllServer()
{ {
var ret = await ConfigDbManager.AddGroupAllServer(_config, SelectedSub); var ret = await ConfigDbHandler.AddGroupAllServer(_config, SelectedSub);
if (ret.Success != true) if (ret.Success != true)
{ {
NoticeManager.Instance.Enqueue(ResUI.OperationFailed); NoticeManager.Instance.Enqueue(ResUI.OperationFailed);
@@ -623,7 +623,7 @@ public partial class ProfilesViewModel : MyReactiveObject
private async Task GenGroupRegionServer() private async Task GenGroupRegionServer()
{ {
var ret = await ConfigDbManager.AddGroupRegionServer(_config, SelectedSub); var ret = await ConfigDbHandler.AddGroupRegionServer(_config, SelectedSub);
if (ret.Success != true) if (ret.Success != true)
{ {
NoticeManager.Instance.Enqueue(ResUI.OperationFailed); NoticeManager.Instance.Enqueue(ResUI.OperationFailed);
@@ -643,7 +643,7 @@ public partial class ProfilesViewModel : MyReactiveObject
_dicHeaderSort.TryAdd(colName, true); _dicHeaderSort.TryAdd(colName, true);
_dicHeaderSort.TryGetValue(colName, out var asc); _dicHeaderSort.TryGetValue(colName, out var asc);
if (await ConfigDbManager.SortServers(_config, _config.SubIndexId, colName, asc) != 0) if (await ConfigDbHandler.SortServers(_config, _config.SubIndexId, colName, asc) != 0)
{ {
return; return;
} }
@@ -653,7 +653,7 @@ public partial class ProfilesViewModel : MyReactiveObject
public async Task RemoveInvalidServerResult() public async Task RemoveInvalidServerResult()
{ {
var count = await ConfigDbManager.RemoveInvalidServerResult(_config, _config.SubIndexId); var count = await ConfigDbHandler.RemoveInvalidServerResult(_config, _config.SubIndexId);
await RefreshServers(); await RefreshServers();
NoticeManager.Instance.Enqueue(string.Format(ResUI.RemoveInvalidServerResultTip, count)); NoticeManager.Instance.Enqueue(string.Format(ResUI.RemoveInvalidServerResultTip, count));
} }
@@ -667,7 +667,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return; return;
} }
await ConfigDbManager.MoveToGroup(_config, lstSelected, SelectedMoveToGroup.Id); await ConfigDbHandler.MoveToGroup(_config, lstSelected, SelectedMoveToGroup.Id);
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
await RefreshServers(); await RefreshServers();
@@ -685,7 +685,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return; return;
} }
if (await ConfigDbManager.MoveServer(_config, lstProfile, index, eMove) == 0) if (await ConfigDbHandler.MoveServer(_config, lstProfile, index, eMove) == 0)
{ {
await RefreshServers(); await RefreshServers();
} }
@@ -697,7 +697,7 @@ public partial class ProfilesViewModel : MyReactiveObject
if (startIndex >= 0 && targetIndex >= 0 && startIndex != targetIndex) if (startIndex >= 0 && targetIndex >= 0 && startIndex != targetIndex)
{ {
var lstProfile = ProfileItems?.Select(t => t.IndexId).ToList() ?? []; var lstProfile = ProfileItems?.Select(t => t.IndexId).ToList() ?? [];
if (await ConfigDbManager.MoveServer(_config, lstProfile, startIndex, EMove.Position, targetIndex) == 0) if (await ConfigDbHandler.MoveServer(_config, lstProfile, startIndex, EMove.Position, targetIndex) == 0)
{ {
await RefreshServers(); await RefreshServers();
} }
@@ -719,7 +719,7 @@ public partial class ProfilesViewModel : MyReactiveObject
.Select(item => item.IndexId) .Select(item => item.IndexId)
.ToList(); .ToList();
var result = await ConfigDbManager.MoveServersTo( var result = await ConfigDbHandler.MoveServersTo(
_config, _config,
orderedProfileIds, orderedProfileIds,
sourceIndices, sourceIndices,
@@ -923,7 +923,7 @@ public partial class ProfilesViewModel : MyReactiveObject
{ {
return; return;
} }
await ConfigDbManager.DeleteSubItem(_config, item.Id); await ConfigDbHandler.DeleteSubItem(_config, item.Id);
await RefreshSubscriptions(); await RefreshSubscriptions();
await SubSelectedChangedAsync(); await SubSelectedChangedAsync();
@@ -45,7 +45,7 @@ public partial class RoutingRuleDetailsViewModel : MyReactiveObject, ICloseable
public RoutingRuleDetailsViewModel(RulesItem rulesItem) public RoutingRuleDetailsViewModel(RulesItem rulesItem)
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
SelectProfileCmd = ReactiveCommand.CreateFromTask(async () => SelectProfileCmd = ReactiveCommand.CreateFromTask(async () =>
{ {
@@ -38,7 +38,7 @@ public partial class RoutingRuleSettingViewModel : MyReactiveObject, ICloseable
public RoutingRuleSettingViewModel(RoutingItem routingItem) public RoutingRuleSettingViewModel(RoutingItem routingItem)
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue( var canEditRemove = this.WhenAnyValue(
x => x.SelectedSource, x => x.SelectedSource,
@@ -211,7 +211,7 @@ public partial class RoutingRuleSettingViewModel : MyReactiveObject, ICloseable
return; return;
} }
var index = _rules.IndexOf(item); var index = _rules.IndexOf(item);
if (await ConfigDbManager.MoveRoutingRule(_rules, index, eMove) == 0) if (await ConfigDbHandler.MoveRoutingRule(_rules, index, eMove) == 0)
{ {
RefreshRulesItems(); RefreshRulesItems();
} }
@@ -233,7 +233,7 @@ public partial class RoutingRuleSettingViewModel : MyReactiveObject, ICloseable
item.RuleNum = _rules.Count; item.RuleNum = _rules.Count;
item.RuleSet = JsonUtils.Serialize(_rules, false); item.RuleSet = JsonUtils.Serialize(_rules, false);
if (await ConfigDbManager.SaveRoutingItem(_config, item) == 0) if (await ConfigDbHandler.SaveRoutingItem(_config, item) == 0)
{ {
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty); RequestClose?.Invoke(this, EventArgs.Empty);
@@ -32,7 +32,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
public RoutingSettingViewModel() public RoutingSettingViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue( var canEditRemove = this.WhenAnyValue(
x => x.SelectedSource, x => x.SelectedSource,
@@ -77,7 +77,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
DomainStrategy = _config.RoutingBasicItem.DomainStrategy; DomainStrategy = _config.RoutingBasicItem.DomainStrategy;
DomainStrategy4Singbox = _config.RoutingBasicItem.DomainStrategy4Singbox; DomainStrategy4Singbox = _config.RoutingBasicItem.DomainStrategy4Singbox;
await ConfigDbManager.InitBuiltinRouting(_config); await ConfigDbHandler.InitBuiltinRouting(_config);
await RefreshRoutingItems(); await RefreshRoutingItems();
} }
@@ -113,7 +113,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
{ {
_config.RoutingBasicItem.DomainStrategy = DomainStrategy; _config.RoutingBasicItem.DomainStrategy = DomainStrategy;
_config.RoutingBasicItem.DomainStrategy4Singbox = DomainStrategy4Singbox; _config.RoutingBasicItem.DomainStrategy4Singbox = DomainStrategy4Singbox;
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
#endregion Refresh Save #endregion Refresh Save
@@ -157,7 +157,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
var item = await ConfigDbQuery.GetRoutingItem(it?.Id); var item = await ConfigDbQuery.GetRoutingItem(it?.Id);
if (item != null) if (item != null)
{ {
await ConfigDbManager.RemoveRoutingItem(item); await ConfigDbHandler.RemoveRoutingItem(item);
} }
} }
@@ -174,7 +174,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
return; return;
} }
if (await ConfigDbManager.SetDefaultRouting(_config, item) == 0) if (await ConfigDbHandler.SetDefaultRouting(_config, item) == 0)
{ {
await RefreshRoutingItems(); await RefreshRoutingItems();
IsModified = true; IsModified = true;
@@ -183,7 +183,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
private async Task RoutingAdvancedImportRules() private async Task RoutingAdvancedImportRules()
{ {
if (await ConfigDbManager.InitRouting(_config, true) == 0) if (await ConfigDbHandler.InitRouting(_config, true) == 0)
{ {
await RefreshRoutingItems(); await RefreshRoutingItems();
IsModified = true; IsModified = true;
@@ -107,7 +107,7 @@ public partial class StatusBarViewModel : MyReactiveObject
public StatusBarViewModel() public StatusBarViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
SelectedRouting = new(); SelectedRouting = new();
SelectedServer = new(); SelectedServer = new();
RunningServerToolTipText = GetRunningServerToolTipText("-"); RunningServerToolTipText = GetRunningServerToolTipText("-");
@@ -218,7 +218,7 @@ public partial class StatusBarViewModel : MyReactiveObject
private async Task Init() private async Task Init()
{ {
await ConfigDbManager.InitBuiltinRouting(_config); await ConfigDbHandler.InitBuiltinRouting(_config);
await RefreshRoutingsMenu(); await RefreshRoutingsMenu();
await InboundDisplayStatus(); await InboundDisplayStatus();
// The view refreshes its icon on initialization; interaction handlers are not registered yet. // The view refreshes its icon on initialization; interaction handlers are not registered yet.
@@ -267,7 +267,7 @@ public partial class StatusBarViewModel : MyReactiveObject
await RefreshServersMenu(); await RefreshServersMenu();
//display running server //display running server
var running = await ConfigDbManager.GetDefaultServer(_config); var running = await ConfigDbHandler.GetDefaultServer(_config);
if (running != null) if (running != null)
{ {
RunningServerDisplay = running.GetSummary(); RunningServerDisplay = running.GetSummary();
@@ -319,7 +319,7 @@ public partial class StatusBarViewModel : MyReactiveObject
public async Task<AvailabilityCheckResult?> TestServerAvailability() public async Task<AvailabilityCheckResult?> TestServerAvailability()
{ {
var item = await ConfigDbManager.GetDefaultServer(_config); var item = await ConfigDbHandler.GetDefaultServer(_config);
if (item == null) if (item == null)
{ {
return null; return null;
@@ -373,7 +373,7 @@ public partial class StatusBarViewModel : MyReactiveObject
NoticeManager.Instance.SendMessageEx($"{ResUI.TipChangeSystemProxy} - {_config.SystemProxyItem.SysProxyType}"); NoticeManager.Instance.SendMessageEx($"{ResUI.TipChangeSystemProxy} - {_config.SystemProxyItem.SysProxyType}");
SystemProxySelected = (int)_config.SystemProxyItem.SysProxyType; SystemProxySelected = (int)_config.SystemProxyItem.SysProxyType;
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
public async Task ChangeSystemProxyAsync(ESysProxyType type, bool blChange) public async Task ChangeSystemProxyAsync(ESysProxyType type, bool blChange)
@@ -413,7 +413,7 @@ public partial class StatusBarViewModel : MyReactiveObject
return; return;
} }
if (await ConfigDbManager.SetDefaultRouting(_config, item) == 0) if (await ConfigDbHandler.SetDefaultRouting(_config, item) == 0)
{ {
NoticeManager.Instance.SendMessageEx(ResUI.TipChangeRouting); NoticeManager.Instance.SendMessageEx(ResUI.TipChangeRouting);
ReloadRequested.Publish(); ReloadRequested.Publish();
@@ -459,7 +459,7 @@ public partial class StatusBarViewModel : MyReactiveObject
} }
} }
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
ReloadRequested.Publish(); ReloadRequested.Publish();
} }
@@ -24,7 +24,7 @@ public partial class SubEditViewModel : MyReactiveObject, ICloseable
public SubEditViewModel(SubItem subItem) public SubEditViewModel(SubItem subItem)
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
SelectPrevProfileCmd = ReactiveCommand.CreateFromTask(async () => SelectPrevProfileCmd = ReactiveCommand.CreateFromTask(async () =>
{ {
@@ -89,7 +89,7 @@ public partial class SubEditViewModel : MyReactiveObject, ICloseable
SelectedSource.PrevProfile = PrevProfile; SelectedSource.PrevProfile = PrevProfile;
SelectedSource.NextProfile = NextProfile; SelectedSource.NextProfile = NextProfile;
if (await ConfigDbManager.AddSubItem(_config, SelectedSource) == 0) if (await ConfigDbHandler.AddSubItem(_config, SelectedSource) == 0)
{ {
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty); RequestClose?.Invoke(this, EventArgs.Empty);
@@ -22,7 +22,7 @@ public partial class SubSettingViewModel : MyReactiveObject
public SubSettingViewModel() public SubSettingViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue( var canEditRemove = this.WhenAnyValue(
x => x.SelectedSource, x => x.SelectedSource,
@@ -92,7 +92,7 @@ public partial class SubSettingViewModel : MyReactiveObject
foreach (var it in SelectedSources ?? [SelectedSource]) foreach (var it in SelectedSources ?? [SelectedSource])
{ {
await ConfigDbManager.DeleteSubItem(_config, it.Id); await ConfigDbHandler.DeleteSubItem(_config, it.Id);
} }
await RefreshSubItems(); await RefreshSubItems();
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
+3 -3
View File
@@ -65,7 +65,7 @@ public partial class App : Application
return; return;
} }
if (!ConfigTextManager.Config.UiItem.MacOSShowInDock) if (!ConfigTextHandler.Config.UiItem.MacOSShowInDock)
{ {
MacAppUtils.SetActivationPolicyAccessory(); MacAppUtils.SetActivationPolicyAccessory();
} }
@@ -76,7 +76,7 @@ public partial class App : Application
private static void RestoreMacOSAccessoryPolicyAfterMiniaturize(MainWindow mainWindow) private static void RestoreMacOSAccessoryPolicyAfterMiniaturize(MainWindow mainWindow)
{ {
if (ConfigTextManager.Config.UiItem.MacOSShowInDock) if (ConfigTextHandler.Config.UiItem.MacOSShowInDock)
{ {
return; return;
} }
@@ -98,7 +98,7 @@ public partial class App : Application
private static void RestoreMacOSAccessoryPolicy(MainWindow mainWindow) private static void RestoreMacOSAccessoryPolicy(MainWindow mainWindow)
{ {
if (ConfigTextManager.Config.UiItem.MacOSShowInDock || MacAppUtils.IsWindowMiniaturized(mainWindow)) if (ConfigTextHandler.Config.UiItem.MacOSShowInDock || MacAppUtils.IsWindowMiniaturized(mainWindow))
{ {
return; return;
} }
+2 -2
View File
@@ -23,7 +23,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
{ {
try try
{ {
var sizeItem = ConfigTextManager.GetWindowSizeItem(GetType().Name); var sizeItem = ConfigTextHandler.GetWindowSizeItem(GetType().Name);
if (sizeItem is null) if (sizeItem is null)
{ {
return; return;
@@ -55,7 +55,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
base.OnClosed(e); base.OnClosed(e);
try try
{ {
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height); ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
} }
catch { } catch { }
} }
+1 -1
View File
@@ -30,8 +30,8 @@ global using ServiceLib.Common;
global using ServiceLib.Enums; global using ServiceLib.Enums;
global using ServiceLib.Events; global using ServiceLib.Events;
global using ServiceLib.Handler; global using ServiceLib.Handler;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager; global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.CoreConfigs; global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Configs; global using ServiceLib.Models.Configs;
global using ServiceLib.Models.Dto; global using ServiceLib.Models.Dto;
+1 -1
View File
@@ -69,7 +69,7 @@ internal class Program
if (OperatingSystem.IsMacOS()) if (OperatingSystem.IsMacOS())
{ {
var showInDock = Design.IsDesignMode || ConfigTextManager.Config.UiItem.MacOSShowInDock; var showInDock = Design.IsDesignMode || ConfigTextHandler.Config.UiItem.MacOSShowInDock;
builder = builder.With(new MacOSPlatformOptions { ShowInDock = showInDock }); builder = builder.With(new MacOSPlatformOptions { ShowInDock = showInDock });
} }
@@ -13,7 +13,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
public ThemeSettingViewModel() public ThemeSettingViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
BindingUI(); BindingUI();
RestoreUI(); RestoreUI();
@@ -43,7 +43,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{ {
_config.UiItem.CurrentTheme = CurrentTheme; _config.UiItem.CurrentTheme = CurrentTheme;
ModifyTheme(); ModifyTheme();
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
}); });
@@ -55,7 +55,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{ {
_config.UiItem.CurrentFontSize = CurrentFontSize; _config.UiItem.CurrentFontSize = CurrentFontSize;
ModifyFontSize(); ModifyFontSize();
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
}); });
@@ -67,7 +67,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{ {
_config.UiItem.CurrentLanguage = CurrentLanguage; _config.UiItem.CurrentLanguage = CurrentLanguage;
Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage); Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage);
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
NoticeManager.Instance.Enqueue(ResUI.NeedRebootTips); NoticeManager.Instance.Enqueue(ResUI.NeedRebootTips);
} }
}); });
@@ -9,7 +9,7 @@ public partial class ClashConnectionsView : ReactiveUserControl<ClashConnections
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click; btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
@@ -10,7 +10,7 @@ public partial class DNSSettingWindow : WindowBase<DNSSettingViewModel>
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
Loaded += Window_Loaded; Loaded += Window_Loaded;
btnCancel.Click += (s, e) => Close(); btnCancel.Click += (s, e) => Close();
@@ -10,7 +10,7 @@ public partial class FullConfigTemplateWindow : WindowBase<FullConfigTemplateVie
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
Loaded += Window_Loaded; Loaded += Window_Loaded;
btnCancel.Click += (_, _) => Close(); btnCancel.Click += (_, _) => Close();
@@ -25,7 +25,7 @@ public partial class MainWindow : WindowBase<MainWindowViewModel>
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
_manager = new WindowNotificationManager(TopLevel.GetTopLevel(this)) { MaxItems = 3, Position = NotificationPosition.TopRight }; _manager = new WindowNotificationManager(TopLevel.GetTopLevel(this)) { MaxItems = 3, Position = NotificationPosition.TopRight };
KeyDown += MainWindow_KeyDown; KeyDown += MainWindow_KeyDown;
@@ -396,15 +396,15 @@ public partial class MainWindow : WindowBase<MainWindowViewModel>
private void StorageUI() private void StorageUI()
{ {
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height); ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Horizontal) if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Horizontal)
{ {
ConfigTextManager.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth); ConfigTextHandler.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth);
} }
else if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Vertical) else if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Vertical)
{ {
ConfigTextManager.SaveMainGirdHeight(gridMain.RowDefinitions[0].ActualHeight, gridMain.RowDefinitions[2].ActualHeight); ConfigTextHandler.SaveMainGirdHeight(gridMain.RowDefinitions[0].ActualHeight, gridMain.RowDefinitions[2].ActualHeight);
} }
} }
@@ -13,7 +13,7 @@ public partial class OptionSettingWindow : WindowBase<OptionSettingViewModel>
Loaded += Window_Loaded; Loaded += Window_Loaded;
btnCancel.Click += (s, e) => Close(); btnCancel.Click += (s, e) => Close();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
clbdestOverride.SelectionChanged += ClbdestOverride_SelectionChanged; clbdestOverride.SelectionChanged += ClbdestOverride_SelectionChanged;
btnBrowseCustomSystemProxyPacPath.Click += BtnBrowseCustomSystemProxyPacPath_Click; btnBrowseCustomSystemProxyPacPath.Click += BtnBrowseCustomSystemProxyPacPath_Click;
@@ -15,7 +15,7 @@ public partial class ProfilesView : ReactiveUserControl<ProfilesViewModel>
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
menuSelectAll.Click += menuSelectAll_Click; menuSelectAll.Click += menuSelectAll_Click;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click; btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
@@ -11,7 +11,7 @@ public partial class StatusBarView : ReactiveUserControl<StatusBarViewModel>
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
txtRunningServerDisplay.Tapped += TxtRunningServerDisplay_Tapped; txtRunningServerDisplay.Tapped += TxtRunningServerDisplay_Tapped;
txtRunningInfoDisplay.Tapped += TxtRunningServerDisplay_Tapped; txtRunningInfoDisplay.Tapped += TxtRunningServerDisplay_Tapped;
+1 -1
View File
@@ -3,8 +3,8 @@ global using ServiceLib.Base;
global using ServiceLib.Common; global using ServiceLib.Common;
global using ServiceLib.Enums; global using ServiceLib.Enums;
global using ServiceLib.Handler; global using ServiceLib.Handler;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager; global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.Configs; global using ServiceLib.Models.Configs;
global using ServiceLib.Models.CoreConfigs; global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Dto; global using ServiceLib.Models.Dto;
@@ -42,7 +42,7 @@ internal sealed class RegionalPresetStager(
string.Empty, string.Empty,
string.Empty, string.Empty,
string.Empty, string.Empty,
ConfigDbManager.InitBuiltinSimpleDNS(), ConfigDbHandler.InitBuiltinSimpleDNS(),
[CreateDefaultDns(ECoreType.Xray, "V2ray"), CreateDefaultDns(ECoreType.sing_box, "sing-box")], [CreateDefaultDns(ECoreType.Xray, "V2ray"), CreateDefaultDns(ECoreType.sing_box, "sing-box")],
new(null, [])); new(null, []));
} }
@@ -136,7 +136,7 @@ internal sealed class RegionalPresetStager(
var content = await TryDownloadAsync(url, proxy, cancellationToken); var content = await TryDownloadAsync(url, proxy, cancellationToken);
var template = content is null ? null : JsonUtils.Deserialize<SimpleDNSItem>(content); var template = content is null ? null : JsonUtils.Deserialize<SimpleDNSItem>(content);
return template is null return template is null
? (ConfigDbManager.InitBuiltinSimpleDNS(), true) ? (ConfigDbHandler.InitBuiltinSimpleDNS(), true)
: (template, false); : (template, false);
} }
@@ -36,7 +36,7 @@ public sealed partial class V2rayRuntime
Config.WebDavItem.Password = input.Password; Config.WebDavItem.Password = input.Password;
} }
Config.WebDavItem.DirName = input.DirName?.Trim(); Config.WebDavItem.DirName = input.DirName?.Trim();
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
return OperationView.Ok(ApiMessageKeys.WebDavSettingsSaved); return OperationView.Ok(ApiMessageKeys.WebDavSettingsSaved);
} }
@@ -57,7 +57,7 @@ public sealed partial class V2rayRuntime
{ {
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await ProfileExManager.Instance.SaveTo(); await ProfileExManager.Instance.SaveTo();
await StatisticsManager.Instance.SaveTo(); await StatisticsManager.Instance.SaveTo();
}); });
@@ -211,7 +211,7 @@ public sealed partial class V2rayRuntime
await ProfileExManager.Instance.SaveTo(); await ProfileExManager.Instance.SaveTo();
await StatisticsManager.Instance.SaveTo(); await StatisticsManager.Instance.SaveTo();
StatisticsManager.Instance.Close(); StatisticsManager.Instance.Close();
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()), cancellationToken); await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()), cancellationToken);
await SQLiteHelper.Instance.DisposeDbConnectionAsync(); await SQLiteHelper.Instance.DisposeDbConnectionAsync();
databaseClosed = true; databaseClosed = true;
@@ -113,7 +113,7 @@ public sealed partial class V2rayRuntime
.Distinct(StringComparer.Ordinal) .Distinct(StringComparer.Ordinal)
.ToList(); .ToList();
Config.CheckUpdateItem.UpdateViaProxy = input.UseProxy; Config.CheckUpdateItem.UpdateViaProxy = input.UseProxy;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
return OperationView.Ok(ApiMessageKeys.CoreUpdateSettingsSaved); return OperationView.Ok(ApiMessageKeys.CoreUpdateSettingsSaved);
@@ -39,7 +39,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
Config.SubIndexId = subscriptionId ?? string.Empty; Config.SubIndexId = subscriptionId ?? string.Empty;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
_events.Publish("profiles-changed", new { subscriptionId = Config.SubIndexId }); _events.Publish("profiles-changed", new { subscriptionId = Config.SubIndexId });
return OperationView.Ok(ApiMessageKeys.CommonCompleted, new { subscriptionId = Config.SubIndexId }); return OperationView.Ok(ApiMessageKeys.CommonCompleted, new { subscriptionId = Config.SubIndexId });
@@ -60,10 +60,10 @@ public sealed partial class V2rayRuntime
var count = await _mutations.RunAsync(async () => var count = await _mutations.RunAsync(async () =>
{ {
var imported = await ConfigDbManager.AddBatchServers(Config, request.Content, groupId, request.IsSubscription); var imported = await ConfigDbHandler.AddBatchServers(Config, request.Content, groupId, request.IsSubscription);
if (imported > 0) if (imported > 0)
{ {
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
} }
return imported; return imported;
}); });
@@ -160,13 +160,13 @@ public sealed partial class V2rayRuntime
try try
{ {
result = await _mutations.RunAsync(() => profile.ConfigType.IsGroupType() result = await _mutations.RunAsync(() => profile.ConfigType.IsGroupType()
? ConfigDbManager.AddServerCommon(Config, profile) ? ConfigDbHandler.AddServerCommon(Config, profile)
: profile.ConfigType switch : profile.ConfigType switch
{ {
EConfigType.Custom when isNew => ConfigDbManager.AddCustomServer(Config, profile, blDelete: false), EConfigType.Custom when isNew => ConfigDbHandler.AddCustomServer(Config, profile, blDelete: false),
EConfigType.Outbound when isNew => ConfigDbManager.AddCustomOutboundServer(Config, profile, blDelete: false, toFile: true), EConfigType.Outbound when isNew => ConfigDbHandler.AddCustomOutboundServer(Config, profile, blDelete: false, toFile: true),
EConfigType.Custom or EConfigType.Outbound => ConfigDbManager.EditCustomServer(Config, profile), EConfigType.Custom or EConfigType.Outbound => ConfigDbHandler.EditCustomServer(Config, profile),
_ => ConfigDbManager.AddServer(Config, profile), _ => ConfigDbHandler.AddServer(Config, profile),
}); });
} }
catch (Exception exception) catch (Exception exception)
@@ -263,14 +263,14 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
if (await ConfigDbManager.RemoveServers(Config, selected) != 0) if (await ConfigDbHandler.RemoveServers(Config, selected) != 0)
{ {
throw new IOException("ServiceLib could not remove the selected profiles."); throw new IOException("ServiceLib could not remove the selected profiles.");
} }
if (removesCurrent) if (removesCurrent)
{ {
_ = await ConfigDbManager.GetDefaultServer(Config); _ = await ConfigDbHandler.GetDefaultServer(Config);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
} }
}); });
@@ -297,7 +297,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_not_found", ApiMessageKeys.ProfileNotFound); return OperationView.Fail("profile_not_found", ApiMessageKeys.ProfileNotFound);
} }
if (await _mutations.RunAsync(() => ConfigDbManager.CopyServer(Config, items)) != 0) if (await _mutations.RunAsync(() => ConfigDbHandler.CopyServer(Config, items)) != 0)
{ {
return OperationView.Fail("profile_copy_failed", ApiMessageKeys.CommonInvalidInput); return OperationView.Fail("profile_copy_failed", ApiMessageKeys.CommonInvalidInput);
} }
@@ -319,7 +319,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_not_found", ApiMessageKeys.ProfileNotFound); return OperationView.Fail("profile_not_found", ApiMessageKeys.ProfileNotFound);
} }
if (await _mutations.RunAsync(() => ConfigDbManager.MoveToGroup(Config, items, request.SubscriptionId ?? string.Empty)) != 0) if (await _mutations.RunAsync(() => ConfigDbHandler.MoveToGroup(Config, items, request.SubscriptionId ?? string.Empty)) != 0)
{ {
return OperationView.Fail("profile_move_failed", ApiMessageKeys.CommonInvalidInput); return OperationView.Fail("profile_move_failed", ApiMessageKeys.CommonInvalidInput);
} }
@@ -338,7 +338,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_not_in_group", ApiMessageKeys.ProfileNotInGroup); return OperationView.Fail("profile_not_in_group", ApiMessageKeys.ProfileNotInGroup);
} }
var result = await _mutations.RunAsync(() => ConfigDbManager.MoveServer(Config, orderedIds, index, request.Direction, request.Position)); var result = await _mutations.RunAsync(() => ConfigDbHandler.MoveServer(Config, orderedIds, index, request.Direction, request.Position));
_events.Publish("profiles-changed", new { subscriptionId = groupId }); _events.Publish("profiles-changed", new { subscriptionId = groupId });
return result == 0 return result == 0
? OperationView.Ok(ApiMessageKeys.ProfileOrderSaved) ? OperationView.Ok(ApiMessageKeys.ProfileOrderSaved)
@@ -353,7 +353,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_sort_column_invalid", ApiMessageKeys.CommonInvalidInput); return OperationView.Fail("profile_sort_column_invalid", ApiMessageKeys.CommonInvalidInput);
} }
var result = await _mutations.RunAsync(() => ConfigDbManager.SortServers(Config, groupId, request.Column, request.Ascending)); var result = await _mutations.RunAsync(() => ConfigDbHandler.SortServers(Config, groupId, request.Column, request.Ascending));
_events.Publish("profiles-changed", new { subscriptionId = groupId }); _events.Publish("profiles-changed", new { subscriptionId = groupId });
return result == 0 return result == 0
? OperationView.Ok(ApiMessageKeys.ProfileOrderSaved) ? OperationView.Ok(ApiMessageKeys.ProfileOrderSaved)
@@ -362,14 +362,14 @@ public sealed partial class V2rayRuntime
public async Task<OperationView> RemoveDuplicateProfilesAsync(string? subscriptionId) public async Task<OperationView> RemoveDuplicateProfilesAsync(string? subscriptionId)
{ {
var result = await _mutations.RunAsync(() => ConfigDbManager.DedupServerList(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty)); var result = await _mutations.RunAsync(() => ConfigDbHandler.DedupServerList(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty));
_events.Publish("profiles-changed", new { subscriptionId = subscriptionId ?? Config.SubIndexId }); _events.Publish("profiles-changed", new { subscriptionId = subscriptionId ?? Config.SubIndexId });
return OperationView.Ok(ApiMessageKeys.ProfileDeduplicated, new { removed = result.Item1 - result.Item2 }); return OperationView.Ok(ApiMessageKeys.ProfileDeduplicated, new { removed = result.Item1 - result.Item2 });
} }
public async Task<OperationView> RemoveInvalidProfilesAsync(string? subscriptionId) public async Task<OperationView> RemoveInvalidProfilesAsync(string? subscriptionId)
{ {
var count = await _mutations.RunAsync(() => ConfigDbManager.RemoveInvalidServerResult(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty)); var count = await _mutations.RunAsync(() => ConfigDbHandler.RemoveInvalidServerResult(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty));
_events.Publish("profiles-changed", new { subscriptionId = subscriptionId ?? Config.SubIndexId }); _events.Publish("profiles-changed", new { subscriptionId = subscriptionId ?? Config.SubIndexId });
return count < 0 return count < 0
? OperationView.Ok(ApiMessageKeys.CommonCompleted, new { removed = 0 }) ? OperationView.Ok(ApiMessageKeys.CommonCompleted, new { removed = 0 })
@@ -389,8 +389,8 @@ public sealed partial class V2rayRuntime
} }
var result = await _mutations.RunAsync(() => byRegion var result = await _mutations.RunAsync(() => byRegion
? ConfigDbManager.AddGroupRegionServer(Config, subscription) ? ConfigDbHandler.AddGroupRegionServer(Config, subscription)
: ConfigDbManager.AddGroupAllServer(Config, subscription)); : ConfigDbHandler.AddGroupAllServer(Config, subscription));
if (!result.Success) if (!result.Success)
{ {
return OperationView.Fail("profile_group_empty", ApiMessageKeys.ProfileGrouped, result.Data); return OperationView.Fail("profile_group_empty", ApiMessageKeys.ProfileGrouped, result.Data);
@@ -61,7 +61,7 @@ public sealed partial class V2rayRuntime
await using var operation = await _operations.EnterOperationAsync(token); await using var operation = await _operations.EnterOperationAsync(token);
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await ProfileExManager.Instance.SaveTo(); await ProfileExManager.Instance.SaveTo();
}, operation.Token); }, operation.Token);
}, cancellationToken); }, cancellationToken);
@@ -252,7 +252,7 @@ public sealed partial class V2rayRuntime
} }
Config.RoutingBasicItem.DomainStrategy = input.DomainStrategy!; Config.RoutingBasicItem.DomainStrategy = input.DomainStrategy!;
Config.RoutingBasicItem.DomainStrategy4Singbox = input.DomainStrategy4Singbox!; Config.RoutingBasicItem.DomainStrategy4Singbox = input.DomainStrategy4Singbox!;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
} }
catch (Exception exception) catch (Exception exception)
@@ -260,7 +260,7 @@ public sealed partial class V2rayRuntime
RestoreConfigValues(Config, oldConfig); RestoreConfigValues(Config, oldConfig);
try try
{ {
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig())); await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()));
} }
catch (Exception rollbackException) catch (Exception rollbackException)
{ {
@@ -314,7 +314,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
ApplyInboundSettings(Config.Inbound[0], input); ApplyInboundSettings(Config.Inbound[0], input);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
return await CompleteCoreAffectingChangeAsync("inbound", fingerprint != GetCoreConfigurationFingerprint(), applyContext); return await CompleteCoreAffectingChangeAsync("inbound", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
@@ -375,7 +375,7 @@ public sealed partial class V2rayRuntime
Config.Fragment4RayItem.Lengths = fragmentLengths.ToList(); Config.Fragment4RayItem.Lengths = fragmentLengths.ToList();
Config.Fragment4RayItem.Delays = fragmentDelays.ToList(); Config.Fragment4RayItem.Delays = fragmentDelays.ToList();
Config.Fragment4RayItem.MaxSplit = input.FragmentMaxSplit; Config.Fragment4RayItem.MaxSplit = input.FragmentMaxSplit;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
return await CompleteCoreAffectingChangeAsync("core", fingerprint != GetCoreConfigurationFingerprint(), applyContext); return await CompleteCoreAffectingChangeAsync("core", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
@@ -402,7 +402,7 @@ public sealed partial class V2rayRuntime
Config.ConstItem.SrsSourceUrl = input.SrsSourceUrl; Config.ConstItem.SrsSourceUrl = input.SrsSourceUrl;
Config.ConstItem.RouteRulesTemplateSourceUrl = input.RouteRulesTemplateSourceUrl; Config.ConstItem.RouteRulesTemplateSourceUrl = input.RouteRulesTemplateSourceUrl;
Config.ConstItem.SubConvertUrl = input.SubConvertUrl; Config.ConstItem.SubConvertUrl = input.SubConvertUrl;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
if (statisticsChanged) if (statisticsChanged)
@@ -435,7 +435,7 @@ public sealed partial class V2rayRuntime
Config.SpeedTestItem.MixedConcurrencyCount = Math.Max(input.MixedConcurrencyCount, Global.SpeedTestConcurrencyCountMin); Config.SpeedTestItem.MixedConcurrencyCount = Math.Max(input.MixedConcurrencyCount, Global.SpeedTestConcurrencyCountMin);
Config.SpeedTestItem.IPAPIUrl = input.IPAPIUrl; Config.SpeedTestItem.IPAPIUrl = input.IPAPIUrl;
Config.SpeedTestItem.UdpTestTarget = input.UdpTestTarget; Config.SpeedTestItem.UdpTestTarget = input.UdpTestTarget;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
_events.Publish("settings-changed", new { section = "speedtest", restartRequired = false }); _events.Publish("settings-changed", new { section = "speedtest", restartRequired = false });
return OperationView.Ok(ApiMessageKeys.SpeedTestSettingsSaved); return OperationView.Ok(ApiMessageKeys.SpeedTestSettingsSaved);
@@ -467,7 +467,7 @@ public sealed partial class V2rayRuntime
item.CoreType = mapping.CoreType; item.CoreType = mapping.CoreType;
} }
} }
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
return await CompleteCoreAffectingChangeAsync("core-types", fingerprint != GetCoreConfigurationFingerprint(), applyContext); return await CompleteCoreAffectingChangeAsync("core-types", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
} }
@@ -503,7 +503,7 @@ public sealed partial class V2rayRuntime
{ {
Config.RoutingBasicItem.DomainStrategy = input.DomainStrategy!; Config.RoutingBasicItem.DomainStrategy = input.DomainStrategy!;
Config.RoutingBasicItem.DomainStrategy4Singbox = input.DomainStrategy4Singbox!; Config.RoutingBasicItem.DomainStrategy4Singbox = input.DomainStrategy4Singbox!;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
return await CompleteCoreAffectingChangeAsync("routing", fingerprint != GetCoreConfigurationFingerprint(), applyContext); return await CompleteCoreAffectingChangeAsync("routing", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
} }
@@ -522,7 +522,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
Config.SimpleDNSItem = input; Config.SimpleDNSItem = input;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
return await CompleteCoreAffectingChangeAsync("dns", fingerprint != GetCoreConfigurationFingerprint(), applyContext); return await CompleteCoreAffectingChangeAsync("dns", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
} }
@@ -563,7 +563,7 @@ public sealed partial class V2rayRuntime
|| current.DomainDNSAddress != input.DomainDNSAddress || current.DomainDNSAddress != input.DomainDNSAddress
|| current.Remarks != (input.Remarks ?? current.Remarks); || current.Remarks != (input.Remarks ?? current.Remarks);
var item = ApplyDnsProfileInput(current, coreType, input); var item = ApplyDnsProfileInput(current, coreType, input);
return (Result: await ConfigDbManager.SaveDNSItems(Config, item), Changed: changed); return (Result: await ConfigDbHandler.SaveDNSItems(Config, item), Changed: changed);
}); });
if (result.Result == -2) if (result.Result == -2)
{ {
@@ -696,8 +696,8 @@ public sealed partial class V2rayRuntime
item.RuleNum = parsedRules.Count; item.RuleNum = parsedRules.Count;
} }
var result = parsedRules.Count == 0 var result = parsedRules.Count == 0
? await ConfigDbManager.SaveRoutingItem(Config, item) ? await ConfigDbHandler.SaveRoutingItem(Config, item)
: await ConfigDbManager.AddBatchRoutingRules(item, JsonUtils.Serialize(parsedRules, false)); : await ConfigDbHandler.AddBatchRoutingRules(item, JsonUtils.Serialize(parsedRules, false));
return (Result: result, Item: (RoutingItem?)item, Changed: changed); return (Result: result, Item: (RoutingItem?)item, Changed: changed);
}); });
if (save.Result == -2) if (save.Result == -2)
@@ -728,14 +728,14 @@ public sealed partial class V2rayRuntime
{ {
return (Removed: false, AffectsCore: false); return (Removed: false, AffectsCore: false);
} }
await ConfigDbManager.RemoveRoutingItem(item); await ConfigDbHandler.RemoveRoutingItem(item);
if (item.IsActive) if (item.IsActive)
{ {
var remaining = await ConfigDbQuery.RoutingItems() ?? []; var remaining = await ConfigDbQuery.RoutingItems() ?? [];
var fallback = remaining.FirstOrDefault(); var fallback = remaining.FirstOrDefault();
if (fallback is not null) if (fallback is not null)
{ {
if (await ConfigDbManager.SetDefaultRouting(Config, fallback) != 0) if (await ConfigDbHandler.SetDefaultRouting(Config, fallback) != 0)
{ {
throw new IOException("ServiceLib could not select the fallback routing profile."); throw new IOException("ServiceLib could not select the fallback routing profile.");
} }
@@ -743,7 +743,7 @@ public sealed partial class V2rayRuntime
else else
{ {
Config.RoutingBasicItem.RoutingIndexId = string.Empty; Config.RoutingBasicItem.RoutingIndexId = string.Empty;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
} }
} }
return (Removed: true, AffectsCore: item.IsActive); return (Removed: true, AffectsCore: item.IsActive);
@@ -772,7 +772,7 @@ public sealed partial class V2rayRuntime
return (Result: -2, Changed: false); return (Result: -2, Changed: false);
} }
var changed = !item.IsActive; var changed = !item.IsActive;
return (Result: changed ? await ConfigDbManager.SetDefaultRouting(Config, item) : 0, Changed: changed); return (Result: changed ? await ConfigDbHandler.SetDefaultRouting(Config, item) : 0, Changed: changed);
}); });
if (result.Result == -2) if (result.Result == -2)
{ {
@@ -823,7 +823,7 @@ public sealed partial class V2rayRuntime
{ {
return -2; return -2;
} }
return await ConfigDbManager.AddBatchRoutingRules(item, JsonUtils.Serialize(rules, false)); return await ConfigDbHandler.AddBatchRoutingRules(item, JsonUtils.Serialize(rules, false));
} }
private async Task<string> GetActiveRoutingSignatureAsync() private async Task<string> GetActiveRoutingSignatureAsync()
@@ -930,7 +930,7 @@ public sealed partial class V2rayRuntime
{ {
return -3; return -3;
} }
if (await ConfigDbManager.MoveRoutingRule(rules, index, direction, position) != 0) if (await ConfigDbHandler.MoveRoutingRule(rules, index, direction, position) != 0)
{ {
return -4; return -4;
} }
@@ -993,7 +993,7 @@ public sealed partial class V2rayRuntime
} }
var before = await GetActiveRoutingSignatureAsync(); var before = await GetActiveRoutingSignatureAsync();
var result = await _mutations.RunAsync(() => ConfigDbManager.InitRouting(Config, true)); var result = await _mutations.RunAsync(() => ConfigDbHandler.InitRouting(Config, true));
if (result != 0) if (result != 0)
{ {
return OperationView.Fail("routing_import_failed", ApiMessageKeys.RoutingSaveFailed); return OperationView.Fail("routing_import_failed", ApiMessageKeys.RoutingSaveFailed);
@@ -1048,7 +1048,7 @@ public sealed partial class V2rayRuntime
return -2; return -2;
} }
var item = ApplyCoreConfigTemplateInput(current, coreType, input); var item = ApplyCoreConfigTemplateInput(current, coreType, input);
return await ConfigDbManager.SaveFullConfigTemplate(Config, item); return await ConfigDbHandler.SaveFullConfigTemplate(Config, item);
}); });
if (result == -2) if (result == -2)
{ {
@@ -1160,7 +1160,7 @@ public sealed partial class V2rayRuntime
await SQLiteHelper.Instance.DeleteAllAsync<DNSItem>(); await SQLiteHelper.Instance.DeleteAllAsync<DNSItem>();
foreach (var item in stage.DnsItems) foreach (var item in stage.DnsItems)
{ {
if (await ConfigDbManager.SaveDNSItems(Config, item) != 0) if (await ConfigDbHandler.SaveDNSItems(Config, item) != 0)
{ {
throw new IOException($"The {item.CoreType} DNS profile could not be saved."); throw new IOException($"The {item.CoreType} DNS profile could not be saved.");
} }
@@ -1168,7 +1168,7 @@ public sealed partial class V2rayRuntime
// Default routing uses embedded data only; this call performs no network I/O // Default routing uses embedded data only; this call performs no network I/O
// because the route template source was cleared in the staged plan. // because the route template source was cleared in the staged plan.
if (await ConfigDbManager.InitRouting(Config, false) != 0) if (await ConfigDbHandler.InitRouting(Config, false) != 0)
{ {
throw new IOException("The built-in routing profiles could not be initialized."); throw new IOException("The built-in routing profiles could not be initialized.");
} }
@@ -1177,7 +1177,7 @@ public sealed partial class V2rayRuntime
{ {
foreach (var item in stage.DnsItems) foreach (var item in stage.DnsItems)
{ {
if (await ConfigDbManager.SaveDNSItems(Config, item) != 0) if (await ConfigDbHandler.SaveDNSItems(Config, item) != 0)
{ {
throw new IOException($"The {item.CoreType} DNS profile could not be saved."); throw new IOException($"The {item.CoreType} DNS profile could not be saved.");
} }
@@ -1188,7 +1188,7 @@ public sealed partial class V2rayRuntime
var item = await ConfigDbQuery.GetRoutingItem(itemId); var item = await ConfigDbQuery.GetRoutingItem(itemId);
if (item is not null) if (item is not null)
{ {
await ConfigDbManager.RemoveRoutingItem(item); await ConfigDbHandler.RemoveRoutingItem(item);
} }
} }
@@ -1207,7 +1207,7 @@ public sealed partial class V2rayRuntime
foreach (var item in stage.Routing.Items) foreach (var item in stage.Routing.Items)
{ {
item.Sort = ++nextSort; item.Sort = ++nextSort;
if (await ConfigDbManager.AddBatchRoutingRules(item, item.RuleSet ?? "[]") != 0) if (await ConfigDbHandler.AddBatchRoutingRules(item, item.RuleSet ?? "[]") != 0)
{ {
throw new IOException($"The routing profile '{item.Remarks}' could not be saved."); throw new IOException($"The routing profile '{item.Remarks}' could not be saved.");
} }
@@ -1216,7 +1216,7 @@ public sealed partial class V2rayRuntime
var defaultItem = stage.Routing.DefaultRemarks is { } remarks var defaultItem = stage.Routing.DefaultRemarks is { } remarks
? stage.Routing.Items.FirstOrDefault(item => item.Remarks == remarks) ? stage.Routing.Items.FirstOrDefault(item => item.Remarks == remarks)
: null; : null;
if (defaultItem is not null && await ConfigDbManager.SetDefaultRouting(Config, defaultItem) != 0) if (defaultItem is not null && await ConfigDbHandler.SetDefaultRouting(Config, defaultItem) != 0)
{ {
throw new IOException("The first staged routing profile could not be activated."); throw new IOException("The first staged routing profile could not be activated.");
} }
@@ -1226,7 +1226,7 @@ public sealed partial class V2rayRuntime
{ {
var existingDefault = currentRoutes.FirstOrDefault(item => item.Id == existingDefaultId); var existingDefault = currentRoutes.FirstOrDefault(item => item.Id == existingDefaultId);
if (existingDefault is not null && !existingDefault.IsActive if (existingDefault is not null && !existingDefault.IsActive
&& await ConfigDbManager.SetDefaultRouting(Config, existingDefault) != 0) && await ConfigDbHandler.SetDefaultRouting(Config, existingDefault) != 0)
{ {
throw new IOException("The migrated default routing profile could not be activated."); throw new IOException("The migrated default routing profile could not be activated.");
} }
@@ -1234,7 +1234,7 @@ public sealed partial class V2rayRuntime
} }
token.ThrowIfCancellationRequested(); token.ThrowIfCancellationRequested();
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
token.ThrowIfCancellationRequested(); token.ThrowIfCancellationRequested();
}, token), }, token),
() => RestoreRegionalPresetSnapshotAsync(applyContext)); () => RestoreRegionalPresetSnapshotAsync(applyContext));
@@ -1349,7 +1349,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
RestoreConfigValues(Config, context.OldConfig); RestoreConfigValues(Config, context.OldConfig);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await SQLiteHelper.Instance.DeleteAllAsync<RoutingItem>(); await SQLiteHelper.Instance.DeleteAllAsync<RoutingItem>();
if (context.OldRoutingItems.Length > 0 if (context.OldRoutingItems.Length > 0
@@ -1625,7 +1625,7 @@ public sealed partial class V2rayRuntime
try try
{ {
RestoreConfigValues(Config, context.OldConfig); RestoreConfigValues(Config, context.OldConfig);
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig())); await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()));
configRestored = true; configRestored = true;
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
+21 -21
View File
@@ -44,7 +44,7 @@ public sealed partial class V2rayRuntime(
private bool _restoring; private bool _restoring;
private int _restoreAndRestartRequested; private int _restoreAndRestartRequested;
private Config Config => ConfigTextManager.Config; private Config Config => ConfigTextHandler.Config;
private CoreRuntimeSnapshot CurrentCoreRuntime => Volatile.Read(ref _coreRuntime); private CoreRuntimeSnapshot CurrentCoreRuntime => Volatile.Read(ref _coreRuntime);
public bool RestoreAndRestartRequested => Volatile.Read(ref _restoreAndRestartRequested) != 0; public bool RestoreAndRestartRequested => Volatile.Read(ref _restoreAndRestartRequested) != 0;
@@ -245,19 +245,19 @@ public sealed partial class V2rayRuntime(
{ {
Config.Inbound[0].AllowLANConn = allowProxyFromLan; Config.Inbound[0].AllowLANConn = allowProxyFromLan;
} }
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
await ConfigDbManager.InitBuiltinDNS(Config); await ConfigDbHandler.InitBuiltinDNS(Config);
await BuiltinDnsProfileBootstrap.EnsureAsync( await BuiltinDnsProfileBootstrap.EnsureAsync(
Config, Config,
async () => await ConfigDbQuery.DNSItems() ?? [], async () => await ConfigDbQuery.DNSItems() ?? [],
ConfigDbManager.SaveDNSItems); ConfigDbHandler.SaveDNSItems);
await ConfigDbManager.InitBuiltinFullConfigTemplate(Config); await ConfigDbHandler.InitBuiltinFullConfigTemplate(Config);
// Keep startup aligned with Desktop's StatusBarViewModel. In particular, // Keep startup aligned with Desktop's StatusBarViewModel. In particular,
// InitBuiltinRouting owns the RoutingIndexId -> IsActive migration and must // InitBuiltinRouting owns the RoutingIndexId -> IsActive migration and must
// run even when a restored Desktop database already has routing rows. // run even when a restored Desktop database already has routing rows.
await ConfigDbManager.InitBuiltinRouting(Config); await ConfigDbHandler.InitBuiltinRouting(Config);
_ = await ConfigDbManager.GetDefaultRouting(Config); _ = await ConfigDbHandler.GetDefaultRouting(Config);
var restoredSubscriptions = await ConfigDbQuery.SubItems() ?? []; var restoredSubscriptions = await ConfigDbQuery.SubItems() ?? [];
var normalizedSubIndexId = NormalizeSelectedSubscriptionId( var normalizedSubIndexId = NormalizeSelectedSubscriptionId(
Config.SubIndexId, Config.SubIndexId,
@@ -268,8 +268,8 @@ public sealed partial class V2rayRuntime(
Config.SubIndexId = normalizedSubIndexId; Config.SubIndexId = normalizedSubIndexId;
} }
var selectedProfileId = Config.IndexId; var selectedProfileId = Config.IndexId;
var defaultProfile = await ConfigDbManager.GetDefaultServer(Config); var defaultProfile = await ConfigDbHandler.GetDefaultServer(Config);
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig())); await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()));
await ProfileExManager.Instance.Init(); await ProfileExManager.Instance.Init();
await CertPemManager.Instance.Init(Config); await CertPemManager.Instance.Init(Config);
// The Web frontend owns its runtime and rejects generated launch contexts that enable TUN. // The Web frontend owns its runtime and rejects generated launch contexts that enable TUN.
@@ -392,7 +392,7 @@ public sealed partial class V2rayRuntime(
steps.Add(new("configuration save", async deadline => steps.Add(new("configuration save", async deadline =>
{ {
await _mutations.RunAsync( await _mutations.RunAsync(
() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()), () => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()),
deadline.Token); deadline.Token);
return true; return true;
})); }));
@@ -437,7 +437,7 @@ public sealed partial class V2rayRuntime(
} }
var item = ToSubItem(input, null); var item = ToSubItem(input, null);
var result = await _mutations.RunAsync(() => ConfigDbManager.AddSubItem(Config, item)); var result = await _mutations.RunAsync(() => ConfigDbHandler.AddSubItem(Config, item));
if (result != 0) if (result != 0)
{ {
return new(false, "subscription_save_failed", ApiMessageKeys.SubscriptionSaveFailed, null); return new(false, "subscription_save_failed", ApiMessageKeys.SubscriptionSaveFailed, null);
@@ -466,7 +466,7 @@ public sealed partial class V2rayRuntime(
var item = ToSubItem(input, existing); var item = ToSubItem(input, existing);
item.Id = id; item.Id = id;
var result = await ConfigDbManager.AddSubItem(Config, item); var result = await ConfigDbHandler.AddSubItem(Config, item);
if (result != 0) if (result != 0)
{ {
return new SubscriptionMutationResult(false, "subscription_save_failed", ApiMessageKeys.SubscriptionSaveFailed, null); return new SubscriptionMutationResult(false, "subscription_save_failed", ApiMessageKeys.SubscriptionSaveFailed, null);
@@ -496,14 +496,14 @@ public sealed partial class V2rayRuntime(
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
if (await ConfigDbManager.DeleteSubItem(Config, id) != 0) if (await ConfigDbHandler.DeleteSubItem(Config, id) != 0)
{ {
throw new IOException("ServiceLib could not delete the subscription."); throw new IOException("ServiceLib could not delete the subscription.");
} }
if (removesCurrentProfile) if (removesCurrentProfile)
{ {
_ = await ConfigDbManager.GetDefaultServer(Config); _ = await ConfigDbHandler.GetDefaultServer(Config);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
} }
}); });
@@ -552,7 +552,7 @@ public sealed partial class V2rayRuntime(
await handler.UpdateProcess(id); await handler.UpdateProcess(id);
operation.Token.ThrowIfCancellationRequested(); operation.Token.ThrowIfCancellationRequested();
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await UpdateSubscriptionTimestampLockedAsync(id); await UpdateSubscriptionTimestampLockedAsync(id);
}, operation.Token); }, operation.Token);
_events.Publish("profiles-changed", new { subscriptionId = id }); _events.Publish("profiles-changed", new { subscriptionId = id });
@@ -780,7 +780,7 @@ public sealed partial class V2rayRuntime(
await _mutations.RunAsync(async () => await _mutations.RunAsync(async () =>
{ {
Config.IndexId = profile.IndexId; Config.IndexId = profile.IndexId;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}); });
} }
@@ -789,10 +789,10 @@ public sealed partial class V2rayRuntime(
private async Task<ProfileItem?> GetDefaultProfileAsync() => await _mutations.RunAsync(async () => private async Task<ProfileItem?> GetDefaultProfileAsync() => await _mutations.RunAsync(async () =>
{ {
var selected = await ConfigDbManager.GetDefaultServer(Config); var selected = await ConfigDbHandler.GetDefaultServer(Config);
if (selected is not null) if (selected is not null)
{ {
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()); await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
} }
return selected; return selected;
}); });
@@ -1178,7 +1178,7 @@ public sealed partial class V2rayRuntime(
if (item is not null) if (item is not null)
{ {
item.UpdateTime = updateTime; item.UpdateTime = updateTime;
if (await ConfigDbManager.AddSubItem(Config, item) != 0) if (await ConfigDbHandler.AddSubItem(Config, item) != 0)
{ {
throw new IOException("ServiceLib could not save the subscription timestamp."); throw new IOException("ServiceLib could not save the subscription timestamp.");
} }
@@ -1191,7 +1191,7 @@ public sealed partial class V2rayRuntime(
if (item.Enabled) if (item.Enabled)
{ {
item.UpdateTime = updateTime; item.UpdateTime = updateTime;
if (await ConfigDbManager.AddSubItem(Config, item) != 0) if (await ConfigDbHandler.AddSubItem(Config, item) != 0)
{ {
throw new IOException("ServiceLib could not save the subscription timestamp."); throw new IOException("ServiceLib could not save the subscription timestamp.");
} }
+1 -1
View File
@@ -1,8 +1,8 @@
global using ServiceLib; global using ServiceLib;
global using ServiceLib.Common; global using ServiceLib.Common;
global using ServiceLib.Enums; global using ServiceLib.Enums;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager; global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.Configs; global using ServiceLib.Models.Configs;
global using ServiceLib.Models.CoreConfigs; global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Dto; global using ServiceLib.Models.Dto;
@@ -24,7 +24,7 @@ public class ParityValidationTests
await code.Should().BeEqualTo("ok"); await code.Should().BeEqualTo("ok");
await profile.IsValid().Should().BeFalse(); await profile.IsValid().Should().BeFalse();
var result = await ConfigDbManager.AddShadowsocksServer(new Config(), profile, toFile: false); var result = await ConfigDbHandler.AddShadowsocksServer(new Config(), profile, toFile: false);
await result.Should().BeEqualTo(0); await result.Should().BeEqualTo(0);
await profile.ConfigVersion.Should().BeEqualTo(4); await profile.ConfigVersion.Should().BeEqualTo(4);
@@ -41,7 +41,7 @@ public class ParityValidationTests
await code.Should().BeEqualTo("ok"); await code.Should().BeEqualTo("ok");
await profile.IsValid().Should().BeTrue(); await profile.IsValid().Should().BeTrue();
var result = await ConfigDbManager.AddShadowsocksServer(new Config(), profile, toFile: false); var result = await ConfigDbHandler.AddShadowsocksServer(new Config(), profile, toFile: false);
await result.Should().BeEqualTo(0); await result.Should().BeEqualTo(0);
} }
@@ -54,7 +54,7 @@ public class ParityValidationTests
var valid = V2rayRuntime.TryValidateProfile(profile, out _, out _); var valid = V2rayRuntime.TryValidateProfile(profile, out _, out _);
await valid.Should().BeTrue(); await valid.Should().BeTrue();
var result = await ConfigDbManager.AddShadowsocksServer(new Config(), profile, toFile: false); var result = await ConfigDbHandler.AddShadowsocksServer(new Config(), profile, toFile: false);
await result.Should().BeEqualTo(-1); await result.Should().BeEqualTo(-1);
} }
@@ -104,7 +104,7 @@ public class RegionalPresetStagingTests
await applyCalled.Should().BeTrue(); await applyCalled.Should().BeTrue();
await capturedStage.Should().NotBeNull(); await capturedStage.Should().NotBeNull();
await capturedStage!.DnsItems[0].NormalDNS.Should().BeEqualTo("existing-xray-data"); await capturedStage!.DnsItems[0].NormalDNS.Should().BeEqualTo("existing-xray-data");
await capturedStage.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbManager.InitBuiltinSimpleDNS().RemoteDNS); await capturedStage.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbHandler.InitBuiltinSimpleDNS().RemoteDNS);
await capturedStage.Routing.IsBuiltinFallback.Should().BeTrue(); await capturedStage.Routing.IsBuiltinFallback.Should().BeTrue();
await capturedStage.Routing.Items.Count.Should().BeEqualTo(3); await capturedStage.Routing.Items.Count.Should().BeEqualTo(3);
await config.ConstItem.GeoSourceUrl.Should().BeEqualTo("original-geo-source"); await config.ConstItem.GeoSourceUrl.Should().BeEqualTo("original-geo-source");
@@ -562,7 +562,7 @@ public class RegionalPresetStagingTests
var staged = await stager.StageAsync(EPresetType.Russia, CreateDnsRows(), [], null, CancellationToken.None); var staged = await stager.StageAsync(EPresetType.Russia, CreateDnsRows(), [], null, CancellationToken.None);
var builtin = ConfigDbManager.InitBuiltinSimpleDNS(); var builtin = ConfigDbHandler.InitBuiltinSimpleDNS();
await staged.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(builtin.RemoteDNS); await staged.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(builtin.RemoteDNS);
await staged.SimpleDnsItem.DirectDNS.Should().BeEqualTo(builtin.DirectDNS); await staged.SimpleDnsItem.DirectDNS.Should().BeEqualTo(builtin.DirectDNS);
await staged.DnsItems.All(item => item.Enabled).Should().BeTrue(); await staged.DnsItems.All(item => item.Enabled).Should().BeTrue();
@@ -667,7 +667,7 @@ public class RegionalPresetStagingTests
var staged = await stager.StageAsync(EPresetType.Russia, CreateDnsRows(), [], null, CancellationToken.None); var staged = await stager.StageAsync(EPresetType.Russia, CreateDnsRows(), [], null, CancellationToken.None);
await staged.DnsItems[0].NormalDNS.Should().BeEqualTo("existing-xray-data"); await staged.DnsItems[0].NormalDNS.Should().BeEqualTo("existing-xray-data");
await staged.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbManager.InitBuiltinSimpleDNS().RemoteDNS); await staged.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbHandler.InitBuiltinSimpleDNS().RemoteDNS);
await staged.Routing.IsBuiltinFallback.Should().BeTrue(); await staged.Routing.IsBuiltinFallback.Should().BeTrue();
await staged.Routing.Items.Count.Should().BeEqualTo(3); await staged.Routing.Items.Count.Should().BeEqualTo(3);
} }
@@ -221,7 +221,7 @@ public class SniffingSettingsIntegrationTests
], ],
GlobalHotkeys = [], GlobalHotkeys = [],
CoreTypeItem = [new CoreTypeItem { ConfigType = EConfigType.VMess, CoreType = ECoreType.Xray }], CoreTypeItem = [new CoreTypeItem { ConfigType = EConfigType.VMess, CoreType = ECoreType.Xray }],
SimpleDNSItem = ConfigDbManager.InitBuiltinSimpleDNS(), SimpleDNSItem = ConfigDbHandler.InitBuiltinSimpleDNS(),
HappyEyeballs4RayItem = new HappyEyeballs4RayItem(), HappyEyeballs4RayItem = new HappyEyeballs4RayItem(),
IndexId = string.Empty, IndexId = string.Empty,
SubIndexId = string.Empty, SubIndexId = string.Empty,
+2 -2
View File
@@ -11,7 +11,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
{ {
try try
{ {
var sizeItem = ConfigTextManager.GetWindowSizeItem(GetType().Name); var sizeItem = ConfigTextHandler.GetWindowSizeItem(GetType().Name);
if (sizeItem == null) if (sizeItem == null)
{ {
return; return;
@@ -32,7 +32,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
try try
{ {
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height); ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
} }
catch { } catch { }
} }
@@ -10,7 +10,7 @@ public class MaterialDesignFonts
{ {
try try
{ {
var fontFamily = ConfigTextManager.Config.UiItem.CurrentFontFamily; var fontFamily = ConfigTextHandler.Config.UiItem.CurrentFontFamily;
if (fontFamily.IsNotEmpty()) if (fontFamily.IsNotEmpty())
{ {
var fontPath = Utils.GetFontsPath(); var fontPath = Utils.GetFontsPath();
+1 -1
View File
@@ -27,8 +27,8 @@ global using ServiceLib.Common;
global using ServiceLib.Enums; global using ServiceLib.Enums;
global using ServiceLib.Events; global using ServiceLib.Events;
global using ServiceLib.Handler; global using ServiceLib.Handler;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager; global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.CoreConfigs; global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Configs; global using ServiceLib.Models.Configs;
global using ServiceLib.Models.Dto; global using ServiceLib.Models.Dto;
+1 -1
View File
@@ -22,7 +22,7 @@ public sealed partial class HotkeyManager
private void Init() private void Init()
{ {
_hotkeyTriggerDic.Clear(); _hotkeyTriggerDic.Clear();
foreach (var item in ConfigTextManager.Config.GlobalHotkeys) foreach (var item in ConfigTextHandler.Config.GlobalHotkeys)
{ {
if (item.KeyCode != null && (Key)item.KeyCode != Key.None) if (item.KeyCode != null && (Key)item.KeyCode != Key.None)
{ {
+1 -1
View File
@@ -55,7 +55,7 @@ public sealed class WindowsManager
{ {
try try
{ {
var item = await ConfigDbManager.GetDefaultRouting(config); var item = await ConfigDbHandler.GetDefaultRouting(config);
if (item == null || item.CustomIcon.IsNullOrEmpty() || !File.Exists(item.CustomIcon)) if (item == null || item.CustomIcon.IsNullOrEmpty() || !File.Exists(item.CustomIcon))
{ {
return null; return null;
@@ -23,7 +23,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
public ThemeSettingViewModel() public ThemeSettingViewModel()
{ {
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
RegisterSystemColorSet(_config, ModifyTheme); RegisterSystemColorSet(_config, ModifyTheme);
@@ -64,7 +64,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{ {
_config.UiItem.CurrentTheme = CurrentTheme; _config.UiItem.CurrentTheme = CurrentTheme;
ModifyTheme(); ModifyTheme();
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
}); });
@@ -83,7 +83,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{ {
_config.UiItem.ColorPrimaryName = SelectedSwatch?.Name; _config.UiItem.ColorPrimaryName = SelectedSwatch?.Name;
ChangePrimaryColor(SelectedSwatch.ExemplarHue.Color); ChangePrimaryColor(SelectedSwatch.ExemplarHue.Color);
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
}); });
@@ -95,7 +95,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{ {
_config.UiItem.CurrentFontSize = CurrentFontSize; _config.UiItem.CurrentFontSize = CurrentFontSize;
ModifyFontSize(); ModifyFontSize();
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
} }
}); });
@@ -107,7 +107,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{ {
_config.UiItem.CurrentLanguage = CurrentLanguage; _config.UiItem.CurrentLanguage = CurrentLanguage;
Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage); Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage);
await ConfigTextManager.SaveConfig(); await ConfigTextHandler.SaveConfig();
NoticeManager.Instance.Enqueue(ResUI.NeedRebootTips); NoticeManager.Instance.Enqueue(ResUI.NeedRebootTips);
} }
}); });
@@ -51,7 +51,7 @@ public partial class AddGroupServerWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void InitializeData(ProfileItem profileItem) private void InitializeData(ProfileItem profileItem)
+1 -1
View File
@@ -38,7 +38,7 @@ public partial class AddServer2Window
interaction.SetOutput(fileName); interaction.SetOutput(fileName);
}).DisposeWith(disposables); }).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void InitializeData(ProfileItem profileItem) private void InitializeData(ProfileItem profileItem)
+1 -1
View File
@@ -204,7 +204,7 @@ public partial class AddServerWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void InitializeData(ProfileItem profileItem) private void InitializeData(ProfileItem profileItem)
@@ -14,7 +14,7 @@ public partial class ClashConnectionsView
public ClashConnectionsView() public ClashConnectionsView()
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click; btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
+2 -2
View File
@@ -8,7 +8,7 @@ public partial class DNSSettingWindow
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
cmbDirectDNSStrategy.ItemsSource = Global.DomainStrategy; cmbDirectDNSStrategy.ItemsSource = Global.DomainStrategy;
cmbRemoteDNSStrategy.ItemsSource = Global.DomainStrategy; cmbRemoteDNSStrategy.ItemsSource = Global.DomainStrategy;
@@ -72,7 +72,7 @@ public partial class DNSSettingWindow
this.OneWayBind(ViewModel, vm => vm.IsSimpleDNSEnabled, v => v.gridBasicDNSSettings.IsEnabled).DisposeWith(disposables); this.OneWayBind(ViewModel, vm => vm.IsSimpleDNSEnabled, v => v.gridBasicDNSSettings.IsEnabled).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.IsSimpleDNSEnabled, v => v.gridAdvancedDNSSettings.IsEnabled).DisposeWith(disposables); this.OneWayBind(ViewModel, vm => vm.IsSimpleDNSEnabled, v => v.gridAdvancedDNSSettings.IsEnabled).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void linkDnsObjectDoc_Click(object sender, RoutedEventArgs e) private void linkDnsObjectDoc_Click(object sender, RoutedEventArgs e)
@@ -8,7 +8,7 @@ public partial class FullConfigTemplateWindow
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
this.WhenActivated(disposables => this.WhenActivated(disposables =>
{ {
@@ -25,7 +25,7 @@ public partial class FullConfigTemplateWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void linkFullConfigTemplateDoc_Click(object sender, RoutedEventArgs e) private void linkFullConfigTemplateDoc_Click(object sender, RoutedEventArgs e)
@@ -21,7 +21,7 @@ public partial class GlobalHotkeySettingWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
BindingData(); BindingData();
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
Init(); Init();
} }
+4 -4
View File
@@ -17,7 +17,7 @@ public partial class MainWindow
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
ThreadPool.RegisterWaitForSingleObject(App.ProgramStarted, OnProgramStarted, null, -1, false); ThreadPool.RegisterWaitForSingleObject(App.ProgramStarted, OnProgramStarted, null, -1, false);
App.Current.SessionEnding += Current_SessionEnding; App.Current.SessionEnding += Current_SessionEnding;
@@ -345,15 +345,15 @@ public partial class MainWindow
private void StorageUI() private void StorageUI()
{ {
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height); ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Horizontal) if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Horizontal)
{ {
ConfigTextManager.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth); ConfigTextHandler.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth);
} }
else if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Vertical) else if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Vertical)
{ {
ConfigTextManager.SaveMainGirdHeight(gridMain1.RowDefinitions[0].ActualHeight, gridMain1.RowDefinitions[2].ActualHeight); ConfigTextHandler.SaveMainGirdHeight(gridMain1.RowDefinitions[0].ActualHeight, gridMain1.RowDefinitions[2].ActualHeight);
} }
} }
@@ -10,7 +10,7 @@ public partial class OptionSettingWindow
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
clbdestOverride.SelectionChanged += ClbdestOverride_SelectionChanged; clbdestOverride.SelectionChanged += ClbdestOverride_SelectionChanged;
btnBrowseCustomSystemProxyPacPath.Click += BtnBrowseCustomSystemProxyPacPath_Click; btnBrowseCustomSystemProxyPacPath.Click += BtnBrowseCustomSystemProxyPacPath_Click;
@@ -149,7 +149,7 @@ public partial class OptionSettingWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private async Task InitSettingFont() private async Task InitSettingFont()
@@ -39,7 +39,7 @@ public partial class ProfilesSelectWindow
}).DisposeWith(disposables); }).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void AllowMultiSelect(bool allow) private void AllowMultiSelect(bool allow)
+1 -1
View File
@@ -17,7 +17,7 @@ public partial class ProfilesView
InitializeComponent(); InitializeComponent();
lstGroup.MaxHeight = Math.Floor(SystemParameters.WorkArea.Height * 0.20 / 40) * 40; lstGroup.MaxHeight = Math.Floor(SystemParameters.WorkArea.Height * 0.20 / 40) * 40;
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click; btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
txtServerFilter.PreviewKeyDown += TxtServerFilter_PreviewKeyDown; txtServerFilter.PreviewKeyDown += TxtServerFilter_PreviewKeyDown;
@@ -37,7 +37,7 @@ public partial class RoutingRuleDetailsWindow
this.BindCommand(ViewModel, vm => vm.SelectProfileCmd, v => v.btnSelectProfile).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SelectProfileCmd, v => v.btnSelectProfile).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void InitializeData(RulesItem rulesItem) private void InitializeData(RulesItem rulesItem)
@@ -76,7 +76,7 @@ public partial class RoutingRuleSettingWindow
interaction.SetOutput(fileName); interaction.SetOutput(fileName);
}).DisposeWith(disposables); }).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void Window_Loaded(object sender, RoutedEventArgs e) private void Window_Loaded(object sender, RoutedEventArgs e)
@@ -37,7 +37,7 @@ public partial class RoutingSettingWindow
interaction.SetOutput(result); interaction.SetOutput(result);
}).DisposeWith(disposables); }).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void RoutingSettingWindow_Closing(object? sender, System.ComponentModel.CancelEventArgs e) private void RoutingSettingWindow_Closing(object? sender, System.ComponentModel.CancelEventArgs e)
+1 -1
View File
@@ -9,7 +9,7 @@ public partial class StatusBarView
public StatusBarView() public StatusBarView()
{ {
InitializeComponent(); InitializeComponent();
_config = ConfigTextManager.Config; _config = ConfigTextHandler.Config;
menuExit.Click += menuExit_Click; menuExit.Click += menuExit_Click;
txtRunningServerDisplay.PreviewMouseDown += txtRunningInfoDisplay_MouseDoubleClick; txtRunningServerDisplay.PreviewMouseDown += txtRunningInfoDisplay_MouseDoubleClick;
+1 -1
View File
@@ -35,7 +35,7 @@ public partial class SubEditWindow
this.BindCommand(ViewModel, vm => vm.SelectNextProfileCmd, v => v.btnSelectNextProfile).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SelectNextProfileCmd, v => v.btnSelectNextProfile).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private void Window_Loaded(object sender, RoutedEventArgs e) private void Window_Loaded(object sender, RoutedEventArgs e)
+1 -1
View File
@@ -47,7 +47,7 @@ public partial class SubSettingWindow
interaction.SetOutput(RxVoid.Default); interaction.SetOutput(RxVoid.Default);
}).DisposeWith(disposables); }).DisposeWith(disposables);
}); });
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme); WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
} }
private async Task ShareSub(string url) private async Task ShareSub(string url)