diff --git a/src/Starward.Language/Lang.Designer.cs b/src/Starward.Language/Lang.Designer.cs
index a2816bc97..1a8b87fd1 100644
--- a/src/Starward.Language/Lang.Designer.cs
+++ b/src/Starward.Language/Lang.Designer.cs
@@ -2314,6 +2314,24 @@ public static string SelectGamePage_TheLastStep {
}
}
+ ///
+ /// 查找类似 Are you able to receive updates for Starward? 的本地化字符串。
+ ///
+ public static string SelectLanguagePage_AreYouAbleToReceiveUpdatesForStarward {
+ get {
+ return ResourceManager.GetString("SelectLanguagePage_AreYouAbleToReceiveUpdatesForStarward", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 Network Test 的本地化字符串。
+ ///
+ public static string SelectLanguagePage_NetworkTest {
+ get {
+ return ResourceManager.GetString("SelectLanguagePage_NetworkTest", resourceCulture);
+ }
+ }
+
///
/// 查找类似 Account Records 的本地化字符串。
///
diff --git a/src/Starward.Language/Lang.resx b/src/Starward.Language/Lang.resx
index 74600415c..eb1ac33bc 100644
--- a/src/Starward.Language/Lang.resx
+++ b/src/Starward.Language/Lang.resx
@@ -1244,4 +1244,10 @@ Do you accept the risk and continue to use it?
Disable red dot reminder for game notices
+
+ Network Test
+
+
+ Are you able to receive updates for Starward?
+
\ No newline at end of file
diff --git a/src/Starward.Language/Lang.zh-CN.resx b/src/Starward.Language/Lang.zh-CN.resx
index df763c941..2763535f0 100644
--- a/src/Starward.Language/Lang.zh-CN.resx
+++ b/src/Starward.Language/Lang.zh-CN.resx
@@ -1243,4 +1243,10 @@
禁用游戏通知的红点提醒
+
+ 您是否能接收到 Starward 的更新?
+
+
+ 网络测试
+
\ No newline at end of file
diff --git a/src/Starward/AppConfig.cs b/src/Starward/AppConfig.cs
index c48dab80c..6a605253b 100644
--- a/src/Starward/AppConfig.cs
+++ b/src/Starward/AppConfig.cs
@@ -240,7 +240,7 @@ private static void BuildServiceProvider()
sc.AddSingleton();
sc.AddSingleton();
sc.AddSingleton();
- sc.AddSingleton(p => new MetadataClient(ApiCDNIndex, p.GetService()));
+ sc.AddSingleton();
sc.AddSingleton();
sc.AddSingleton();
@@ -289,13 +289,6 @@ public static ILogger GetLogger()
- public static int ApiCDNIndex
- {
- get => GetValue();
- set => SetValue(value);
- }
-
-
public static bool EnablePreviewRelease
{
get => GetValue();
diff --git a/src/Starward/MyWindows/WelcomeWindow.xaml.cs b/src/Starward/MyWindows/WelcomeWindow.xaml.cs
index 6ed9bc65d..90d4a336b 100644
--- a/src/Starward/MyWindows/WelcomeWindow.xaml.cs
+++ b/src/Starward/MyWindows/WelcomeWindow.xaml.cs
@@ -77,8 +77,6 @@ public void NavigateTo(Type page, object parameter, NavigationTransitionInfo inf
public int WindowSizeMode { get; set; }
- public int ApiCDNIndex { get; set; }
-
public string UserDataFolder { get; set; }
@@ -103,7 +101,6 @@ public void Reset()
{
TextLanguage = null!;
WindowSizeMode = 0;
- ApiCDNIndex = 0;
UserDataFolder = null!;
}
@@ -115,7 +112,6 @@ public void ApplySetting()
AppConfig.UserDataFolder = UserDataFolder;
AppConfig.Language = TextLanguage;
AppConfig.WindowSizeMode = WindowSizeMode;
- AppConfig.ApiCDNIndex = ApiCDNIndex;
}
diff --git a/src/Starward/Pages/Welcome/SelectLanguagePage.xaml b/src/Starward/Pages/Welcome/SelectLanguagePage.xaml
index 5d9d9a50e..32108ea20 100644
--- a/src/Starward/Pages/Welcome/SelectLanguagePage.xaml
+++ b/src/Starward/Pages/Welcome/SelectLanguagePage.xaml
@@ -34,18 +34,11 @@
Stretch="Uniform" />
-
-
-
+
-
+
-
+
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Starward/Pages/Welcome/SelectLanguagePage.xaml.cs b/src/Starward/Pages/Welcome/SelectLanguagePage.xaml.cs
index 0431e2393..1e599e14d 100644
--- a/src/Starward/Pages/Welcome/SelectLanguagePage.xaml.cs
+++ b/src/Starward/Pages/Welcome/SelectLanguagePage.xaml.cs
@@ -7,7 +7,6 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media.Animation;
-using Starward.Core.Metadata;
using System;
using System.ComponentModel;
using System.Diagnostics;
@@ -31,8 +30,6 @@ public sealed partial class SelectLanguagePage : PageBase
private readonly HttpClient _httpClient = AppConfig.GetService();
- private readonly MetadataClient _metadataClient = AppConfig.GetService();
-
public SelectLanguagePage()
{
@@ -46,33 +43,28 @@ public SelectLanguagePage()
private async void Page_Loaded(object sender, RoutedEventArgs e)
{
- await Task.Delay(480);
+ await Task.Delay(600);
SettingGridLoad = true;
InitializeLanguageComboBox();
- WelcomeWindow.Current.ApiCDNIndex = AppConfig.ApiCDNIndex;
- switch (AppConfig.ApiCDNIndex)
- {
- case 1: RadioButton_GH.IsChecked = true; break;
- case 2: RadioButton_JD.IsChecked = true; break;
- default: RadioButton_CF.IsChecked = true; break;
- }
- WelcomeWindow.Current.WindowSizeMode = AppConfig.WindowSizeMode;
- switch (AppConfig.WindowSizeMode)
- {
- case 1: RadioButton_WindowSize_Small.IsChecked = true; break;
- default: RadioButton_WindowSize_Normal.IsChecked = true; break;
- }
- TestCDNCommand.Execute(null);
+ IntializeWindowSize();
+ TestSpeedCommand.Execute(null);
}
- private void Grid_OverMask_Loaded(object sender, RoutedEventArgs e)
+ [RelayCommand]
+ private void Next()
{
- Grid_OverMask.Visibility = Visibility.Collapsed;
+ WelcomeWindow.Current.NavigateTo(typeof(SelectDirectoryPage), null!, new SlideNavigationTransitionInfo { Effect = SlideNavigationTransitionEffect.FromRight });
}
+
+
+ #region Language
+
+
+
private bool enableSelectionChanged = false;
@@ -104,15 +96,64 @@ private void InitializeLanguageComboBox()
}
-
- [RelayCommand]
- private void Next()
+ private void ComboBox_Language_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
- WelcomeWindow.Current.NavigateTo(typeof(SelectDirectoryPage), null!, new SlideNavigationTransitionInfo { Effect = SlideNavigationTransitionEffect.FromRight });
+ try
+ {
+ if (ComboBox_Language.SelectedItem is ComboBoxItem item)
+ {
+ if (enableSelectionChanged)
+ {
+ var lang = item.Tag as string;
+ _logger.LogInformation("Language change to {lang}", lang);
+ WelcomeWindow.Current.TextLanguage = lang!;
+ if (string.IsNullOrWhiteSpace(lang))
+ {
+ CultureInfo.CurrentUICulture = CultureInfo.InstalledUICulture;
+ }
+ else
+ {
+ CultureInfo.CurrentUICulture = new CultureInfo(lang);
+ }
+ this.Bindings.Update();
+ }
+ }
+ }
+ catch (CultureNotFoundException)
+ {
+ CultureInfo.CurrentUICulture = CultureInfo.InstalledUICulture;
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Change Language");
+ }
}
+ #endregion
+
+
+
+ #region Window Size
+
+
+
+ private void IntializeWindowSize()
+ {
+ try
+ {
+ WelcomeWindow.Current.WindowSizeMode = AppConfig.WindowSizeMode;
+ switch (AppConfig.WindowSizeMode)
+ {
+ case 1: RadioButton_WindowSize_Small.IsChecked = true; break;
+ default: RadioButton_WindowSize_Normal.IsChecked = true; break;
+ }
+ }
+ catch { }
+ }
+
+
private void RadioButton_WindowSize_Click(object sender, RoutedEventArgs e)
{
try
@@ -135,135 +176,58 @@ private void RadioButton_WindowSize_Click(object sender, RoutedEventArgs e)
+ #endregion
+
+
+
+ #region Speed Test
+
+
+
+
[RelayCommand]
- private async Task TestCDNAsync()
+ private async Task TestSpeedAsync()
{
try
{
- const string url_cf = "https://starward.scighost.com/metadata/test/test_10kb";
- const string url_gh = "https://raw.githubusercontent.com/Scighost/Starward/metadata/test/test_10kb";
- const string url_jd = "https://cdn.jsdelivr.net/gh/Scighost/Starward@metadata/test/test_10kb";
+ const string url = "https://starward.scighost.com/metadata/test/test_100kb";
- TextBlock_TestCND_CF.Text = "";
- TextBlock_TestCDN_GH.Text = "";
- TextBlock_TestCDN_JD.Text = "";
+ TextBlock_Delay.Text = "";
+ TextBlock_Speed.Text = "";
- ProgressRing_TestCND_CF.Visibility = Visibility.Visible;
- ProgressRing_TestCND_GH.Visibility = Visibility.Visible;
- ProgressRing_TestCND_JD.Visibility = Visibility.Visible;
var sw = Stopwatch.StartNew();
-
- var cfTask = async () =>
+ var response = await _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
+ sw.Stop();
+ TextBlock_Delay.Text = $"{sw.ElapsedMilliseconds}ms";
+ sw.Start();
+ var bytes = await response.Content.ReadAsByteArrayAsync();
+ sw.Stop();
+ double speed = bytes.Length / 1024.0 / sw.Elapsed.TotalSeconds;
+ if (speed < 1024)
{
- try
- {
- await _httpClient.GetByteArrayAsync(url_cf);
- TextBlock_TestCND_CF.Text = $"{sw.ElapsedMilliseconds} ms";
- }
- catch (HttpRequestException)
- {
- TextBlock_TestCND_CF.Text = Lang.Common_NetworkError;
- }
- finally
- {
- ProgressRing_TestCND_CF.Visibility = Visibility.Collapsed;
- }
- };
-
- var ghTask = async () =>
- {
- try
- {
- await _httpClient.GetByteArrayAsync(url_gh);
- TextBlock_TestCDN_GH.Text = $"{sw.ElapsedMilliseconds} ms";
- }
- catch (HttpRequestException)
- {
- TextBlock_TestCDN_GH.Text = Lang.Common_NetworkError;
- }
- finally
- {
- ProgressRing_TestCND_GH.Visibility = Visibility.Collapsed;
- }
- };
-
- var jdTask = async () =>
+ TextBlock_Speed.Text = $"{speed:0.00}KB/s";
+ }
+ else
{
- try
- {
- await _httpClient.GetByteArrayAsync(url_jd);
- TextBlock_TestCDN_JD.Text = $"{sw.ElapsedMilliseconds} ms";
- }
- catch (HttpRequestException)
- {
- TextBlock_TestCDN_JD.Text = Lang.Common_NetworkError;
- }
- finally
- {
- ProgressRing_TestCND_JD.Visibility = Visibility.Collapsed;
- }
- };
-
- await Task.WhenAll(cfTask(), ghTask(), jdTask());
+ TextBlock_Speed.Text = $"{speed / 1024:0.00}MB/s";
+ }
}
catch (Exception ex)
{
- _logger.LogError(ex, "Test CDN");
+ TextBlock_Delay.Text = Lang.Common_NetworkError;
+ TextBlock_Speed.Text = "";
+ _logger.LogError(ex, "Test Speed");
}
}
- private void RadioButton_CDN_Click(object sender, RoutedEventArgs e)
- {
- if (sender is FrameworkElement fe)
- {
- var index = fe.Tag switch
- {
- "gh" => 1,
- "jd" => 2,
- _ => 0,
- };
- _metadataClient.SetApiPrefix(index);
- WelcomeWindow.Current.ApiCDNIndex = index;
- }
- }
+
+ #endregion
- private void ComboBox_Language_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- try
- {
- if (ComboBox_Language.SelectedItem is ComboBoxItem item)
- {
- if (enableSelectionChanged)
- {
- var lang = item.Tag as string;
- _logger.LogInformation("Language change to {lang}", lang);
- WelcomeWindow.Current.TextLanguage = lang!;
- if (string.IsNullOrWhiteSpace(lang))
- {
- CultureInfo.CurrentUICulture = CultureInfo.InstalledUICulture;
- }
- else
- {
- CultureInfo.CurrentUICulture = new CultureInfo(lang);
- }
- this.Bindings.Update();
- }
- }
- }
- catch (CultureNotFoundException)
- {
- CultureInfo.CurrentUICulture = CultureInfo.InstalledUICulture;
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "Change Language");
- }
- }