diff --git a/src/ST.Client.Desktop.Avalonia/Application/Converters/ImageValueConverter.cs b/src/ST.Client.Desktop.Avalonia/Application/Converters/ImageValueConverter.cs index 5ae3dde2c..aaedfdb94 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/Converters/ImageValueConverter.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/Converters/ImageValueConverter.cs @@ -22,8 +22,9 @@ namespace System.Application.Converters } [Obsolete("use HttpClient")] - protected static Bitmap DownloadImage(string url, int width = 0) + protected static Bitmap? DownloadImage(string? url, int width = 0) { + if (url == null) return null; using var web = new WebClient(); var ua = DI.Get().UserAgent; web.Headers.Add("User-Agent", ua); diff --git a/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaDesktopAppUpdateServiceImpl.cs b/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaDesktopAppUpdateServiceImpl.cs index 89bc1791d..6d69dcc10 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaDesktopAppUpdateServiceImpl.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/AvaloniaDesktopAppUpdateServiceImpl.cs @@ -1,5 +1,7 @@ -using Microsoft.Extensions.Options; +using Avalonia.Controls.ApplicationLifetimes; +using Microsoft.Extensions.Options; using System.Application.Models; +using AvaloniaApplication = Avalonia.Application; namespace System.Application.Services.Implementation { @@ -15,12 +17,15 @@ namespace System.Application.Services.Implementation this.app = app; } - protected override void OnExistNewVersion() + protected override async void OnExistNewVersion() { - //if (WindowService.Current.MainWindow.Dialog($"检测到新版本更新内容:{UpdateInfo.body}{Environment.NewLine}是否立即下载更新?", $"{ProductInfo.Title} | 更新提示") == true) - //{ - // DownloadUpdate(); - //} + if (AvaloniaApplication.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + if (desktop.Windows.Any_Nullable(x => x.IsActive)) + { + await IShowWindowService.Instance.Show(typeof(object), CustomWindow.NewVersion); + } + } } protected override void OnExit() diff --git a/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/ShowWindowServiceImpl.cs b/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/ShowWindowServiceImpl.cs index f8322f524..e433f02cf 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/ShowWindowServiceImpl.cs +++ b/src/ST.Client.Desktop.Avalonia/Application/Services/Implementation/ShowWindowServiceImpl.cs @@ -36,8 +36,11 @@ namespace System.Application.Services.Implementation { var windowType = GetWindowType(customWindow); var window = (Window)Activator.CreateInstance(windowType); - if (viewModel == null) viewModel = (WindowViewModel)Activator.CreateInstance(typeWindowViewModel); - if (!string.IsNullOrEmpty(title)) + if (viewModel == null && typeWindowViewModel != typeof(object)) + { + viewModel = (WindowViewModel)Activator.CreateInstance(typeWindowViewModel); + } + if (!string.IsNullOrEmpty(title) && viewModel != null) { viewModel.Title = title; } @@ -87,7 +90,7 @@ namespace System.Application.Services.Implementation BindingDialogWindowViewModel(window, dialogWindowViewModel, actionDialogWindowViewModel); } } - window.DataContext = viewModel; + if (viewModel != null) window.DataContext = viewModel; if (isDialog) { await IDesktopAvaloniaAppService.Instance.ShowDialogWindow(window); diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/TitleBar.axaml b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/TitleBar.axaml index ecd64cb58..7644f259e 100644 --- a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/TitleBar.axaml +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Controls/TitleBar.axaml @@ -13,7 +13,7 @@ - + diff --git a/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Windows/NewVersionWindow.axaml b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Windows/NewVersionWindow.axaml new file mode 100644 index 000000000..a323ffc73 --- /dev/null +++ b/src/ST.Client.Desktop.Avalonia/Application/UI/Views/Windows/NewVersionWindow.axaml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + +