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));