From 8c52921b3ef0279292ee491b4d3313237f0607cc Mon Sep 17 00:00:00 2001
From: DismissedLight <1686188646@qq.com>
Date: Tue, 14 Feb 2023 14:30:59 +0800
Subject: [PATCH] refactor codebase
---
src/Snap.Hutao/.editorconfig | 2 +-
.../Control/Animation/AnimationDurations.cs | 16 +++
.../Control/Animation/ImageZoomInAnimation.cs | 10 +-
.../Animation/ImageZoomOutAnimation.cs | 7 +-
.../Control/Behavior/AutoHeightBehavior.cs | 15 ++-
.../Control/Behavior/AutoWidthBehavior.cs | 9 +-
...dsContentIntoTitleBarWorkaroundBehavior.cs | 2 +-
.../Behavior/InvokeCommandOnLoadedBehavior.cs | 5 +-
.../InvokeCommandOnUnloadedBehavior.cs | 36 -----
.../Behavior/OpenAttachedFlyoutAction.cs | 3 +-
.../Snap.Hutao/Control/BindingProxy.cs | 1 +
.../Snap.Hutao/Control/BoxedValues.cs | 26 ++++
.../Extension/ContentDialogExtension.cs | 11 +-
.../Snap.Hutao/Control/Image/CachedImage.cs | 8 +-
.../Control/Image/CompositionExtension.cs | 53 +++-----
.../Control/Image/CompositionImage.cs | 70 +++++-----
.../Snap.Hutao/Control/Image/Gradient.cs | 18 +--
.../Control/Image/GradientDirection.cs | 3 +-
.../Snap.Hutao/Control/Image/GradientStop.cs | 34 +++++
.../Snap.Hutao/Control/Image/MonoChrome.cs | 7 +-
.../Control/Markup/BitmapIconExtension.cs | 3 +-
.../Control/Markup/FontIconExtension.cs | 3 +-
.../Control/Markup/FontIconSourceExtension.cs | 28 ----
.../Control/Markup/ResourceStringExtension.cs | 17 +--
.../Snap.Hutao/Control/Media/Bgra8.cs | 3 +-
.../Snap.Hutao/Control/Media/Rgba8.cs | 4 +-
.../Control/Media/SoftwareBitmapExtension.cs | 3 +-
.../Snap.Hutao/Control/Panel/AspectRatio.cs | 5 +-
.../Control/Panel/PanelSelector.xaml | 46 +++----
.../Control/Panel/PanelSelector.xaml.cs | 7 +-
src/Snap.Hutao/Snap.Hutao/Control/Property.cs | 13 ++
.../Snap.Hutao/Control/ScopedPage.cs | 3 +-
.../Control/Text/DescriptionTextBlock.cs | 8 +-
.../Snap.Hutao/Control/Theme/ThemeHelper.cs | 1 +
.../Snap.Hutao/Control/ValueConverter.cs | 2 +-
.../Core/Abstraction/DisposableObject.cs | 3 +-
.../Core/Abstraction/IDeconstructable.cs | 1 +
.../{INamed.cs => INamedService.cs} | 3 +-
.../Core/Annotation/HighQualityAttribute.cs | 12 ++
.../Annotation/LocalizationKeyAttribute.cs | 3 +-
.../Snap.Hutao/Core/Caching/IImageCache.cs | 1 +
.../Caching/IImageCacheFilePathOperation.cs | 1 +
.../Snap.Hutao/Core/Caching/ImageCache.cs | 18 ++-
.../Snap.Hutao/Core/CommandLineBuilder.cs | 4 +-
src/Snap.Hutao/Snap.Hutao/Core/Convert.cs | 1 +
.../Snap.Hutao/Core/CoreEnvironment.cs | 75 +++++------
.../Snap.Hutao/Core/Database/DbCurrent.cs | 3 +-
.../Core/Database/DbSetExtension.cs | 3 +
.../Core/Database/EnumerableExtension.cs | 1 +
.../Snap.Hutao/Core/Database/ISelectable.cs | 5 +-
.../Core/Database/QueryableExtension.cs | 3 +
.../Core/Database/ScopedDbCurrent.cs | 12 +-
...ntryHelper.cs => SettingEntryExtension.cs} | 16 +--
.../DependencyInjection/IocConfiguration.cs | 1 +
.../IocHttpClientConfiguration.cs | 1 +
.../ServiceCollectionExtension.cs | 1 +
.../ExceptionService/ExceptionRecorder.cs | 6 +-
.../RuntimeEnvironmentException.cs | 3 +-
.../Core/ExceptionService/ThrowHelper.cs | 1 +
.../UserdataCorruptedException.cs | 3 +-
.../Core/ExpressionService/CastTo.cs | 1 +
.../Snap.Hutao/Core/IO/Bits/BitsJob.cs | 29 ++--
.../Snap.Hutao/Core/IO/Bits/BitsManager.cs | 17 ++-
.../Core/IO/Bits/ProgressUpdateStatus.cs | 1 +
.../Core/IO/DataTransfer/Clipboard.cs | 4 +-
src/Snap.Hutao/Snap.Hutao/Core/IO/Digest.cs | 7 +-
.../Snap.Hutao/Core/IO/FileOperation.cs | 1 +
.../Snap.Hutao/Core/IO/Ini/IniComment.cs | 3 +-
.../Snap.Hutao/Core/IO/Ini/IniElement.cs | 1 +
.../Snap.Hutao/Core/IO/Ini/IniParameter.cs | 3 +-
.../Snap.Hutao/Core/IO/Ini/IniSection.cs | 3 +-
.../Snap.Hutao/Core/IO/Ini/IniSerializer.cs | 5 +-
src/Snap.Hutao/Snap.Hutao/Core/IO/TempFile.cs | 5 +-
.../Converter/ConfigurableEnumConverter.cs | 3 +-
.../Json/Converter/DateTimeOffsetConverter.cs | 1 +
.../SeparatorCommaInt32EnumerableConverter.cs | 27 +++-
.../StringEnumKeyDictionaryConverter.cs | 15 +--
.../Snap.Hutao/Core/Json/JsonTextEncoder.cs | 45 -------
.../Core/Json/JsonTypeInfoResolvers.cs | 27 ++--
.../Snap.Hutao/Core/JumpListHelper.cs | 4 +-
.../Snap.Hutao/Core/LifeCycle/Activation.cs | 40 ++++--
.../AppActivationArgumentsExtensions.cs | 3 +-
.../Core/LifeCycle/AppInstanceExtension.cs | 11 +-
.../Snap.Hutao/Core/Logging/EventIds.cs | 125 ------------------
.../Snap.Hutao/Core/ScheduleTaskHelper.cs | 1 +
.../Snap.Hutao/Core/Setting/LocalSetting.cs | 1 +
.../Snap.Hutao/Core/Setting/SettingKeys.cs | 1 +
.../Snap.Hutao/Core/Setting/StaticResource.cs | 1 +
.../Snap.Hutao/Core/StringLiterals.cs | 31 +++++
.../Core/Threading/Abstraction/IAwaitable.cs | 4 +-
.../Core/Threading/Abstraction/IAwaiter.cs | 4 +-
.../Threading/Abstraction/ICriticalAwaiter.cs | 4 +-
.../ConcurrentCancellationTokenSource.cs | 2 +
.../Threading/DispatcherQueueExtension.cs | 3 +-
.../DispatherQueueSwitchOperation.cs | 3 +-
.../Core/Threading/SemaphoreSlimExtension.cs | 4 +-
.../Core/Threading/TaskExtensions.cs | 23 +++-
.../Threading/ThreadPoolSwitchOperation.cs | 2 +-
.../Snap.Hutao/Core/Threading/ValueResult.cs | 2 +-
.../Snap.Hutao/Core/Validation/Must.cs | 7 +-
.../Snap.Hutao/Core/WebView2Helper.cs | 4 +-
.../Core/Windowing/AppWindowExtension.cs | 3 +-
.../Snap.Hutao/Core/Windowing/BackdropType.cs | 3 +-
.../Core/Windowing/ExtendedWindow.cs | 87 ++++++------
.../Snap.Hutao/Core/Windowing/Persistence.cs | 11 +-
.../Core/Windowing/SystemBackdrop.cs | 2 +-
.../Core/Windowing/WindowSubclassManager.cs | 3 +-
.../Extension/StringBuilderExtensions.cs | 2 +-
src/Snap.Hutao/Snap.Hutao/GlobalUsing.cs | 1 +
.../Snap.Hutao/LaunchGameWindow.xaml.cs | 2 +-
src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs | 5 +-
.../Snap.Hutao/Package.appxmanifest | 2 +-
.../Service/AvatarInfo/AvatarInfoService.cs | 3 +-
.../Service/DailyNote/DailyNoteNotifier.cs | 2 +-
.../Service/DailyNote/DailyNoteService.cs | 2 +-
.../Factory/GachaStatisticsFactory.cs | 2 +-
.../Service/GachaLog/GachaLogService.cs | 3 +-
.../GachaLogQueryWebCacheProvider.cs | 2 +-
.../QueryProvider/IGachaLogQueryProvider.cs | 2 +-
.../Service/Game/Locator/IGameLocator.cs | 2 +-
.../Game/Locator/UnityLogGameLocator.cs | 2 +-
.../Service/Game/Package/PackageConverter.cs | 4 +-
.../Service/Metadata/MetadataService.cs | 12 +-
.../Snap.Hutao/Service/User/IUserService.cs | 2 +-
.../AchievementArchiveCreateDialog.xaml.cs | 2 +-
.../Dialog/AchievementImportDialog.xaml.cs | 2 +-
.../Dialog/CultivateProjectDialog.xaml.cs | 2 +-
.../CultivatePromotionDeltaDialog.xaml.cs | 2 +-
.../View/Dialog/GachaLogUrlDialog.xaml.cs | 2 +-
.../LaunchGameAccountNameDialog.xaml.cs | 2 +-
.../Snap.Hutao/View/Dialog/UserDialog.xaml.cs | 2 +-
.../View/Page/AchievementPage.xaml.cs | 2 +-
.../View/Page/AnnouncementPage.xaml.cs | 2 +-
.../View/Page/AvatarPropertyPage.xaml.cs | 2 +-
.../View/Page/CultivationPage.xaml.cs | 2 +-
.../View/Page/DailyNotePage.xaml.cs | 2 +-
.../Snap.Hutao/View/Page/GachaLogPage.xaml.cs | 2 +-
.../View/Page/HutaoDatabasePage.xaml.cs | 2 +-
.../Snap.Hutao/View/Page/LaunchGamePage.xaml | 5 +
.../View/Page/LaunchGamePage.xaml.cs | 2 +-
.../View/Page/LoginMihoyoUserPage.xaml.cs | 2 +-
.../Snap.Hutao/View/Page/SettingPage.xaml.cs | 2 +-
.../View/Page/SpiralAbyssRecordPage.xaml.cs | 2 +-
.../Snap.Hutao/View/Page/TestPage.xaml.cs | 2 +-
.../View/Page/WikiAvatarPage.xaml.cs | 2 +-
.../View/Page/WikiWeaponPage.xaml.cs | 2 +-
.../Achievement/AchievementImporter.cs | 2 +-
.../ViewModel/AvatarPropertyViewModel.cs | 3 +-
.../ViewModel/DailyNoteViewModel.cs | 4 +-
.../Snap.Hutao/ViewModel/GachaLogViewModel.cs | 6 +-
.../ViewModel/LaunchGameViewModel.cs | 17 ++-
.../Snap.Hutao/ViewModel/SettingViewModel.cs | 2 +-
.../Web/Bridge/MiHoYoJSInterface.cs | 4 +-
.../DynamicSecret/DynamicSecretHandler.cs | 2 +-
.../Hoyolab/HoyolabHttpClientExtensions.cs | 6 +-
.../Snap.Hutao/Web/HttpClientExtensions.cs | 20 +--
.../Snap.Hutao/Win32/StructExtension.cs | 10 ++
157 files changed, 723 insertions(+), 700 deletions(-)
create mode 100644 src/Snap.Hutao/Snap.Hutao/Control/Animation/AnimationDurations.cs
delete mode 100644 src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnUnloadedBehavior.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Control/BoxedValues.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Control/Image/GradientStop.cs
delete mode 100644 src/Snap.Hutao/Snap.Hutao/Control/Markup/FontIconSourceExtension.cs
rename src/Snap.Hutao/Snap.Hutao/Core/Abstraction/{INamed.cs => INamedService.cs} (86%)
create mode 100644 src/Snap.Hutao/Snap.Hutao/Core/Annotation/HighQualityAttribute.cs
rename src/Snap.Hutao/Snap.Hutao/Core/Database/{SettingEntryHelper.cs => SettingEntryExtension.cs} (87%)
delete mode 100644 src/Snap.Hutao/Snap.Hutao/Core/Json/JsonTextEncoder.cs
delete mode 100644 src/Snap.Hutao/Snap.Hutao/Core/Logging/EventIds.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Core/StringLiterals.cs
diff --git a/src/Snap.Hutao/.editorconfig b/src/Snap.Hutao/.editorconfig
index 7fb1d9f5..55caa86a 100644
--- a/src/Snap.Hutao/.editorconfig
+++ b/src/Snap.Hutao/.editorconfig
@@ -10,7 +10,7 @@ csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = false:silent
csharp_style_expression_bodied_indexers = false:silent
-csharp_style_expression_bodied_accessors = when_on_single_line:silent
+csharp_style_expression_bodied_accessors = when_on_single_line:suggestion
csharp_style_expression_bodied_lambdas = when_on_single_line:silent
csharp_style_expression_bodied_local_functions = false:silent
csharp_style_conditional_delegate_call = true:suggestion
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Animation/AnimationDurations.cs b/src/Snap.Hutao/Snap.Hutao/Control/Animation/AnimationDurations.cs
new file mode 100644
index 00000000..2e025658
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Animation/AnimationDurations.cs
@@ -0,0 +1,16 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Control.Animation;
+
+///
+/// 动画时长
+///
+[HighQuality]
+internal static class AnimationDurations
+{
+ ///
+ /// 图片缩放动画
+ ///
+ public static readonly TimeSpan ImageZoom = TimeSpan.FromSeconds(0.5);
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs
index fee5136e..06df2ce0 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs
@@ -4,6 +4,7 @@
using CommunityToolkit.WinUI.UI;
using CommunityToolkit.WinUI.UI.Animations;
using Microsoft.UI.Composition;
+using System.Diagnostics.Contracts;
using System.Numerics;
namespace Snap.Hutao.Control.Animation;
@@ -11,17 +12,18 @@ namespace Snap.Hutao.Control.Animation;
///
/// 图片放大动画
///
-internal class ImageZoomInAnimation : ImplicitAnimation
+[HighQuality]
+internal sealed class ImageZoomInAnimation : ImplicitAnimation
{
///
/// 构造一个新的图片放大动画
///
public ImageZoomInAnimation()
{
+ Duration = AnimationDurations.ImageZoom;
EasingMode = Microsoft.UI.Xaml.Media.Animation.EasingMode.EaseOut;
EasingType = CommunityToolkit.WinUI.UI.Animations.EasingType.Circle;
- To = "1.1";
- Duration = TimeSpan.FromSeconds(0.5);
+ To = Core.StringLiterals.OnePointOne;
}
///
@@ -35,4 +37,4 @@ internal class ImageZoomInAnimation : ImplicitAnimation
{
return (To?.ToVector3(), From?.ToVector3());
}
-}
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs
index 468af39d..ecb59e66 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs
@@ -11,17 +11,18 @@ namespace Snap.Hutao.Control.Animation;
///
/// 图片缩小动画
///
-internal class ImageZoomOutAnimation : ImplicitAnimation
+[HighQuality]
+internal sealed class ImageZoomOutAnimation : ImplicitAnimation
{
///
/// 构造一个新的图片缩小动画
///
public ImageZoomOutAnimation()
{
+ Duration = AnimationDurations.ImageZoom;
EasingMode = Microsoft.UI.Xaml.Media.Animation.EasingMode.EaseOut;
EasingType = CommunityToolkit.WinUI.UI.Animations.EasingType.Circle;
- To = "1";
- Duration = TimeSpan.FromSeconds(0.5);
+ To = Core.StringLiterals.One;
}
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs
index 047c68bd..1b30b9e9 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs
@@ -9,10 +9,11 @@ namespace Snap.Hutao.Control.Behavior;
///
/// 按给定比例自动调整高度的行为
///
-internal class AutoHeightBehavior : BehaviorBase
+[HighQuality]
+internal sealed class AutoHeightBehavior : BehaviorBase
{
- private static readonly DependencyProperty TargetWidthProperty = Property.Depend(nameof(TargetWidth), 1080D);
- private static readonly DependencyProperty TargetHeightProperty = Property.Depend(nameof(TargetHeight), 390D);
+ private static readonly DependencyProperty TargetWidthProperty = Property.DependBoxed(nameof(TargetWidth), BoxedValues.DoubleOne);
+ private static readonly DependencyProperty TargetHeightProperty = Property.DependBoxed(nameof(TargetHeight), BoxedValues.DoubleOne);
///
/// 目标宽度
@@ -35,7 +36,7 @@ internal class AutoHeightBehavior : BehaviorBase
///
protected override void OnAssociatedObjectLoaded()
{
- UpdateElementHeight();
+ UpdateElement();
AssociatedObject.SizeChanged += OnSizeChanged;
}
@@ -48,11 +49,11 @@ internal class AutoHeightBehavior : BehaviorBase
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
- UpdateElementHeight();
+ UpdateElement();
}
- private void UpdateElementHeight()
+ private void UpdateElement()
{
AssociatedObject.Height = (double)AssociatedObject.ActualWidth * (TargetHeight / TargetWidth);
}
-}
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs
index 34a57a15..6837f71f 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs
@@ -9,7 +9,8 @@ namespace Snap.Hutao.Control.Behavior;
///
/// 按给定比例自动调整高度的行为
///
-internal class AutoWidthBehavior : BehaviorBase
+[HighQuality]
+internal sealed class AutoWidthBehavior : BehaviorBase
{
private static readonly DependencyProperty TargetWidthProperty = Property.Depend(nameof(TargetWidth), 320D);
private static readonly DependencyProperty TargetHeightProperty = Property.Depend(nameof(TargetHeight), 1024D);
@@ -35,7 +36,7 @@ internal class AutoWidthBehavior : BehaviorBase
///
protected override void OnAssociatedObjectLoaded()
{
- UpdateElementWidth();
+ UpdateElement();
AssociatedObject.SizeChanged += OnSizeChanged;
}
@@ -48,10 +49,10 @@ internal class AutoWidthBehavior : BehaviorBase
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
- UpdateElementWidth();
+ UpdateElement();
}
- private void UpdateElementWidth()
+ private void UpdateElement()
{
AssociatedObject.Width = (double)AssociatedObject.Height * (TargetWidth / TargetHeight);
}
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs
index eff38f95..39ceb65a 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs
@@ -11,7 +11,7 @@ namespace Snap.Hutao.Control.Behavior;
/// AppTitleBar Workaround
/// https://github.com/microsoft/microsoft-ui-xaml/issues/7756
///
-internal class ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior : BehaviorBase
+internal sealed class ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior : BehaviorBase
{
private readonly IMessenger messenger;
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs
index 4a274f26..33c61d85 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs
@@ -9,7 +9,8 @@ namespace Snap.Hutao.Control.Behavior;
///
/// 在元素加载完成后执行命令的行为
///
-internal class InvokeCommandOnLoadedBehavior : BehaviorBase
+[HighQuality]
+internal sealed class InvokeCommandOnLoadedBehavior : BehaviorBase
{
private static readonly DependencyProperty CommandProperty = Property.Depend(nameof(Command));
private static readonly DependencyProperty CommandParameterProperty = Property.Depend