From e52f573a7f10cb27d144d16ea99f577c8425010e Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:53:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=AC=AC=E4=B8=80=E6=AC=A1=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=20mirror=E9=85=B1=20=E5=A4=B1=E8=B4=A5=E6=97=B6?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=20cdk=20=E5=B7=B2=E8=BF=87?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaWpfGui/Models/ResourceUpdater.cs | 17 +++++++++++++++++ .../ViewModels/UI/VersionUpdateViewModel.cs | 17 +++++++++++++++++ .../VersionUpdateSettingsUserControlModel.cs | 8 ++++++-- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/MaaWpfGui/Models/ResourceUpdater.cs b/src/MaaWpfGui/Models/ResourceUpdater.cs index 95865708f3..4600319aba 100644 --- a/src/MaaWpfGui/Models/ResourceUpdater.cs +++ b/src/MaaWpfGui/Models/ResourceUpdater.cs @@ -149,6 +149,7 @@ namespace MaaWpfGui.Models { _logger.Error("mirrorc failed"); ToastNotification.ShowDirect(LocalizationHelper.GetString("GameResourceFailed")); + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkFetchFailed = true; return (CheckUpdateRetT.NetworkError, null, null); } @@ -167,6 +168,7 @@ namespace MaaWpfGui.Models if (data is null) { ToastNotification.ShowDirect(LocalizationHelper.GetString("GameResourceFailed")); + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkFetchFailed = true; return (CheckUpdateRetT.UnknownError, null, null); } @@ -189,6 +191,21 @@ namespace MaaWpfGui.Models { case MirrorChyanErrorCode.KeyExpired: ToastNotification.ShowDirect(LocalizationHelper.GetString("MirrorChyanCdkExpired")); + + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkFetchFailed = false; + + // 有人会第一次就填过期的 cdk 吗 + if (SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkExpiredTime == 0) + { + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkExpiredTime = 1; + } + + // 如果上次查出来的时间比现在的还新,说明换了 cdk,重置过期时间 + if (!SettingsViewModel.VersionUpdateSettings.IsMirrorChyanCdkExpired) + { + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkExpiredTime = mirrorChyanCdkExpired ?? 1; + } + break; case MirrorChyanErrorCode.KeyInvalid: ToastNotification.ShowDirect(LocalizationHelper.GetString("MirrorChyanCdkInvalid")); diff --git a/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs b/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs index 3527668896..7186d5818d 100644 --- a/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/VersionUpdateViewModel.cs @@ -999,6 +999,7 @@ public class VersionUpdateViewModel : Screen if (response is null) { _logger.Error("mirrorc failed"); + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkFetchFailed = true; return CheckUpdateRetT.NetworkError; } @@ -1016,6 +1017,7 @@ public class VersionUpdateViewModel : Screen if (data is null) { + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkFetchFailed = true; return CheckUpdateRetT.UnknownError; } @@ -1038,6 +1040,21 @@ public class VersionUpdateViewModel : Screen { case MirrorChyanErrorCode.KeyExpired: ToastNotification.ShowDirect(LocalizationHelper.GetString("MirrorChyanCdkExpired")); + + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkFetchFailed = false; + + // 有人会第一次就填过期的 cdk 吗 + if (SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkExpiredTime == 0) + { + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkExpiredTime = 1; + } + + // 如果上次查出来的时间比现在的还新,说明换了 cdk,重置过期时间 + if (!SettingsViewModel.VersionUpdateSettings.IsMirrorChyanCdkExpired) + { + SettingsViewModel.VersionUpdateSettings.MirrorChyanCdkExpiredTime = mirrorChyanCdkExpired ?? 1; + } + break; case MirrorChyanErrorCode.KeyInvalid: ToastNotification.ShowDirect(LocalizationHelper.GetString("MirrorChyanCdkInvalid")); diff --git a/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs b/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs index 26e5983f09..230fc64580 100644 --- a/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs +++ b/src/MaaWpfGui/ViewModels/UserControl/Settings/VersionUpdateSettingsUserControlModel.cs @@ -325,6 +325,7 @@ public class VersionUpdateSettingsUserControlModel : PropertyChangedBase // 时间戳 private long _mirrorChyanCdkExpiredTime = ConfigurationHelper.GetGlobalValue(ConfigurationKeys.MirrorChyanCdkExpiredTime, 0L); + // 0 表示未设置,1 表示未设置且已过期 public long MirrorChyanCdkExpiredTime { get => _mirrorChyanCdkExpiredTime; @@ -366,10 +367,12 @@ public class VersionUpdateSettingsUserControlModel : PropertyChangedBase /// Gets 显示用的剩余时间提示 /// public string MirrorChyanCdkRemainingText => - IsMirrorChyanCdkExpired + MirrorChyanCdkExpiredTime != 0 + ? IsMirrorChyanCdkExpired ? LocalizationHelper.GetString("MirrorChyanCdkExpired") : string.Format(LocalizationHelper.GetString("MirrorChyanCdkRemainingDays"), - MirrorChyanCdkRemaining.TotalDays.ToString("F1")); + MirrorChyanCdkRemaining.TotalDays.ToString("F1")) + : string.Empty; /// /// Gets uI 显示用颜色 @@ -399,6 +402,7 @@ public class VersionUpdateSettingsUserControlModel : PropertyChangedBase OnPropertyChanged(nameof(IsMirrorChyanCdkExpired)); OnPropertyChanged(nameof(MirrorChyanCdkRemainingText)); OnPropertyChanged(nameof(MirrorChyanCdkRemainingBrush)); + OnPropertyChanged(nameof(MirrorChyanCdkExpiredLocalTime)); } private bool _startupUpdateCheck = Convert.ToBoolean(ConfigurationHelper.GetGlobalValue(ConfigurationKeys.StartupUpdateCheck, bool.TrueString));