diff --git a/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs b/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs index d744baeb6..ed4c70d66 100644 --- a/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs +++ b/src/ST.Client.Desktop.Avalonia.App/App.axaml.cs @@ -173,7 +173,7 @@ namespace System.Application.UI compositeDisposable.Add(ProxyService.Current.Dispose); compositeDisposable.Add(AuthService.Current.SaveEditNameAuthenticators); compositeDisposable.Add(SteamConnectService.Current.Dispose); - compositeDisposable.Add(IArchiSteamFarmService.Instance.StopArchiSteamFarm); + compositeDisposable.Add(IASFService.Instance.StopArchiSteamFarm); if (GeneralSettings.IsStartupAppMinimized.Value) { Program.IsMinimize = true; diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml index ad72ff4f4..545b78239 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml @@ -19,7 +19,7 @@ - @@ -31,16 +31,16 @@ HorizontalAlignment="Center"/> - - + - @@ -52,7 +52,7 @@ HorizontalAlignment="Center"/> - + @@ -89,14 +89,14 @@ - + + IsVisible="{ReflectionBinding Source={x:Static service:IASFService.Instance},Path=!IsArchiSteamFarmExists,Mode=OneWay}"/> @@ -110,7 +110,7 @@ - + diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml.cs b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml.cs index d426ade18..5576f054e 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Pages/ArchiSteamFarmPlusPage.axaml.cs @@ -29,7 +29,7 @@ namespace System.Application.UI.Views.Pages { if (e.Key == Avalonia.Input.Key.Enter && !string.IsNullOrEmpty(commandTextbox.Text)) { - IArchiSteamFarmService.Instance.WirteLineCommand(commandTextbox.Text); + IASFService.Instance.WirteLineCommand(commandTextbox.Text); commandTextbox.Text = ""; } } @@ -46,15 +46,15 @@ namespace System.Application.UI.Views.Pages AllowMultiple = false, }; - if (IArchiSteamFarmService.Instance.IsArchiSteamFarmExists) + if (IASFService.Instance.IsArchiSteamFarmExists) { - fileDialog.Directory = Path.GetDirectoryName(IArchiSteamFarmService.Instance.ArchiSteamFarmExePath); + fileDialog.Directory = Path.GetDirectoryName(IASFService.Instance.ArchiSteamFarmExePath); } var result = await fileDialog.ShowAsync(IDesktopAvaloniaAppService.Instance.MainWindow); if (result.Any_Nullable()) { - IArchiSteamFarmService.Instance.SetArchiSteamFarmExePath(result[0]); + IASFService.Instance.SetArchiSteamFarmExePath(result[0]); } } diff --git a/src/ST.Client.Desktop/ServiceCollectionExtensions.cs b/src/ST.Client.Desktop/ServiceCollectionExtensions.cs index 3c26b2ef8..4d1f518b4 100644 --- a/src/ST.Client.Desktop/ServiceCollectionExtensions.cs +++ b/src/ST.Client.Desktop/ServiceCollectionExtensions.cs @@ -116,9 +116,9 @@ namespace Microsoft.Extensions.DependencyInjection /// /// /// - public static IServiceCollection AddArchiSteamFarmService(this IServiceCollection services) + public static IServiceCollection AddASFService(this IServiceCollection services) { - services.AddSingleton(); + services.AddSingleton(); return services; } } diff --git a/src/ST.Client.Desktop/Services/IArchiSteamFarmService.cs b/src/ST.Client.Desktop/Services/IASFService.cs similarity index 85% rename from src/ST.Client.Desktop/Services/IArchiSteamFarmService.cs rename to src/ST.Client.Desktop/Services/IASFService.cs index 0620455c8..6bccb2ec5 100644 --- a/src/ST.Client.Desktop/Services/IArchiSteamFarmService.cs +++ b/src/ST.Client.Desktop/Services/IASFService.cs @@ -6,9 +6,9 @@ using System.Threading.Tasks; namespace System.Application.Services { - public interface IArchiSteamFarmService + public interface IASFService { - public static IArchiSteamFarmService Instance => DI.Get(); + public static IASFService Instance => DI.Get(); public string? ArchiSteamFarmExePath { get; } public string? ArchiSteamFarmConfigDirPath { get; } diff --git a/src/ST.Client.Desktop/Services/Implementation/ArchiSteamFarmServiceImpl.cs b/src/ST.Client.Desktop/Services/Implementation/ASFServiceImpl.cs similarity index 98% rename from src/ST.Client.Desktop/Services/Implementation/ArchiSteamFarmServiceImpl.cs rename to src/ST.Client.Desktop/Services/Implementation/ASFServiceImpl.cs index 211beb6a9..51461b414 100644 --- a/src/ST.Client.Desktop/Services/Implementation/ArchiSteamFarmServiceImpl.cs +++ b/src/ST.Client.Desktop/Services/Implementation/ASFServiceImpl.cs @@ -13,7 +13,7 @@ using System.Threading.Tasks; namespace System.Application.Services.Implementation { - internal sealed class ArchiSteamFarmServiceImpl : ReactiveObject, IArchiSteamFarmService + internal sealed class ASFServiceImpl : ReactiveObject, IASFService { readonly IDesktopPlatformService platformService; readonly IHttpService httpService; @@ -81,7 +81,7 @@ namespace System.Application.Services.Implementation private set => this.RaiseAndSetIfChanged(ref _IPCUrl, value); } - public ArchiSteamFarmServiceImpl(IDesktopPlatformService platform, IHttpService http, ICloudServiceClient client) + public ASFServiceImpl(IDesktopPlatformService platform, IHttpService http, ICloudServiceClient client) { clientService = client; platformService = platform; diff --git a/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs b/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs index 6992c3166..fb09a04b5 100644 --- a/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs +++ b/src/ST.Client.Desktop/Services/Mvvm/AuthService.cs @@ -409,7 +409,7 @@ namespace System.Application.Services AuthService.AddOrUpdateSaveAuthenticators(new GAPAuthenticatorDTO { - Name = name, + Name = string.IsNullOrEmpty(name) ? "Steam (" + auth.AccountName + ")" : name, Value = auth, }, isLocal, password); return true; diff --git a/src/ST.Client.Desktop/UI/ViewModels/Pages/ArchiSteamFarmPlusPageViewModel.cs b/src/ST.Client.Desktop/UI/ViewModels/Pages/ArchiSteamFarmPlusPageViewModel.cs index b18cea4d7..53bf455d8 100644 --- a/src/ST.Client.Desktop/UI/ViewModels/Pages/ArchiSteamFarmPlusPageViewModel.cs +++ b/src/ST.Client.Desktop/UI/ViewModels/Pages/ArchiSteamFarmPlusPageViewModel.cs @@ -6,7 +6,7 @@ namespace System.Application.UI.ViewModels { public class ArchiSteamFarmPlusPageViewModel : TabItemViewModel { - readonly IArchiSteamFarmService asfSerivce = DI.Get(); + readonly IASFService asfSerivce = DI.Get(); public override string Name { get => AppResources.ArchiSteamFarmPlus; @@ -29,14 +29,16 @@ namespace System.Application.UI.ViewModels public void RunOrStopASF() { - if (asfSerivce.IsArchiSteamFarmRuning) - { - asfSerivce.StopArchiSteamFarm(); - } - else - { - asfSerivce.RunArchiSteamFarm(); - } + //if (asfSerivce.IsArchiSteamFarmRuning) + //{ + // asfSerivce.StopArchiSteamFarm(); + //} + //else + //{ + // asfSerivce.RunArchiSteamFarm(); + //} + + IArchiSteamFarmService.Instance.Start(); } } diff --git a/src/ST.Client/ServiceCollectionExtensions.cs b/src/ST.Client/ServiceCollectionExtensions.cs index 71bb88e73..13d750429 100644 --- a/src/ST.Client/ServiceCollectionExtensions.cs +++ b/src/ST.Client/ServiceCollectionExtensions.cs @@ -72,5 +72,16 @@ namespace Microsoft.Extensions.DependencyInjection services.AddSingleton(s => s.GetRequiredService()); return services; } + + /// + /// 添加 asf 功能 + /// + /// + /// + public static IServiceCollection AddArchiSteamFarmService(this IServiceCollection services) + { + services.AddSingleton(); + return services; + } } } \ No newline at end of file diff --git a/src/ST.Client/Services/IArchiSteamFarmService.cs b/src/ST.Client/Services/IArchiSteamFarmService.cs new file mode 100644 index 000000000..2ea2a13d9 --- /dev/null +++ b/src/ST.Client/Services/IArchiSteamFarmService.cs @@ -0,0 +1,20 @@ +using ReactiveUI; +using System.Diagnostics; +using System.IO; +using System.Text; +using System.Threading.Tasks; + +namespace System.Application.Services +{ + public interface IArchiSteamFarmService + { + public static IArchiSteamFarmService Instance => DI.Get(); + + + /// + /// 启动ASF + /// + /// + void Start(string[]? args = null); + } +} \ No newline at end of file diff --git a/src/ST.Client/Services/Implementation/ArchiSteamFarmServiceImpl.cs b/src/ST.Client/Services/Implementation/ArchiSteamFarmServiceImpl.cs index 5fdd3c57d..c6ff36caa 100644 --- a/src/ST.Client/Services/Implementation/ArchiSteamFarmServiceImpl.cs +++ b/src/ST.Client/Services/Implementation/ArchiSteamFarmServiceImpl.cs @@ -4,16 +4,18 @@ using System.Text; namespace System.Application.Services.Implementation { - public class ArchiSteamFarmServiceImpl + public class ArchiSteamFarmServiceImpl : IArchiSteamFarmService { - public void Init() + public async void Start(string[]? args = null) { - - } - - public void Start() - { - + try + { + await ArchiSteamFarm.Program.Init(args).ConfigureAwait(false); + } + catch (Exception ex) + { + Toast.Show(ex.Message); + } } } } diff --git a/src/Startup2.cs b/src/Startup2.cs index f9a98a62f..8a443627a 100644 --- a/src/Startup2.cs +++ b/src/Startup2.cs @@ -320,6 +320,9 @@ namespace System.Application // ASF Service services.AddArchiSteamFarmService(); + + // ASF Service + services.AddASFService(); #if StartupTrace StartupTrace.Restart("DI.ConfigureDemandServices.Steam"); #endif