This commit is contained in:
DismissedLight
2023-02-18 12:50:10 +08:00
parent 08a630fd43
commit 0372f1a8e3
63 changed files with 96 additions and 100 deletions

View File

@@ -97,13 +97,13 @@ internal static partial class IocHttpClientConfiguration
switch (injectAsName)
{
case DefaultName:
lineBuilder.Append(@"DefaultConfiguration)");
lineBuilder.Append("DefaultConfiguration)");
break;
case XRpcName:
lineBuilder.Append(@"XRpcConfiguration)");
lineBuilder.Append("XRpcConfiguration)");
break;
case XRpc2Name:
lineBuilder.Append(@"XRpc2Configuration)");
lineBuilder.Append("XRpc2Configuration)");
break;
default:
throw new InvalidOperationException($"非法的HttpClientConfigration值: [{injectAsName}]");

View File

@@ -12,8 +12,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Snap.Hutao.SourceGeneration", "Snap.Hutao.SourceGeneration\Snap.Hutao.SourceGeneration.csproj", "{8B96721E-5604-47D2-9B72-06FEBAD0CE00}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Snap.Hutao.Installer", "Snap.Hutao.Installer\Snap.Hutao.Installer.csproj", "{CEC01691-F65E-4874-9AE2-F571369A7631}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -66,22 +64,6 @@ Global
{8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x64.Build.0 = Release|x64
{8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x86.ActiveCfg = Release|Any CPU
{8B96721E-5604-47D2-9B72-06FEBAD0CE00}.Release|x86.Build.0 = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|Any CPU.ActiveCfg = Debug|x64
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|Any CPU.Build.0 = Debug|x64
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|arm64.ActiveCfg = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|arm64.Build.0 = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x64.ActiveCfg = Debug|x64
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x64.Build.0 = Debug|x64
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x86.ActiveCfg = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Debug|x86.Build.0 = Debug|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|Any CPU.Build.0 = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|arm64.ActiveCfg = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|arm64.Build.0 = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x64.ActiveCfg = Release|x64
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x64.Build.0 = Release|x64
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x86.ActiveCfg = Release|Any CPU
{CEC01691-F65E-4874-9AE2-F571369A7631}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -4,7 +4,6 @@
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;

View File

@@ -5,7 +5,6 @@ using CommunityToolkit.WinUI.UI.Controls;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Media.Imaging;
using Snap.Hutao.Core.Caching;
using Snap.Hutao.Extension;
using System.Runtime.InteropServices;
namespace Snap.Hutao.Control.Image;

View File

@@ -8,7 +8,6 @@ using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Hosting;
using Microsoft.UI.Xaml.Media;
using Snap.Hutao.Core.Caching;
using Snap.Hutao.Extension;
using Snap.Hutao.Service.Abstraction;
using System.IO;
using System.Net.Http;

View File

@@ -6,9 +6,6 @@ using Microsoft.UI.Composition;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Media;
using Snap.Hutao.Win32;
using System.IO;
using Windows.Graphics.Imaging;
using Windows.Storage.Streams;
namespace Snap.Hutao.Control.Image;

View File

@@ -4,7 +4,6 @@
using Microsoft.Win32;
using Snap.Hutao.Core.Json;
using Snap.Hutao.Core.Setting;
using Snap.Hutao.Extension;
using Snap.Hutao.Web.Hoyolab.DynamicSecret;
using System.Collections.Immutable;
using System.IO;

View File

@@ -7,8 +7,9 @@ namespace Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient;
/// 指示被标注的类型可注入 HttpClient
/// 由源生成器生成注入代码
/// </summary>
[HighQuality]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public class HttpClientAttribute : Attribute
internal sealed class HttpClientAttribute : Attribute
{
/// <summary>
/// 构造一个新的特性

View File

@@ -6,7 +6,8 @@ namespace Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient;
/// <summary>
/// Http客户端配置
/// </summary>
public enum HttpClientConfigration
[HighQuality]
internal enum HttpClientConfigration
{
/// <summary>
/// 默认配置

View File

@@ -6,9 +6,15 @@ namespace Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient;
/// <summary>
/// 配置首选Http消息处理器特性
/// </summary>
[HighQuality]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public class PrimaryHttpMessageHandlerAttribute : Attribute
internal sealed class PrimaryHttpMessageHandlerAttribute : Attribute
{
/// <inheritdoc cref="System.Net.Http.HttpClientHandler.MaxConnectionsPerServer"/>
public int MaxConnectionsPerServer { get; set; }
/// <summary>
/// <inheritdoc cref="System.Net.Http.HttpClientHandler.UseCookies"/>
/// </summary>
public bool UseCookies { get; set; }
}

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Microsoft.Extensions.Primitives;
using Snap.Hutao.Extension;
namespace Snap.Hutao.Core.Json.Converter;

View File

@@ -38,12 +38,12 @@ internal static class Activation
/// <summary>
/// 启动游戏启动参数
/// </summary>
public const string LaunchGame = "LaunchGame";
public const string LaunchGame = nameof(LaunchGame);
/// <summary>
/// 从剪贴板导入成就
/// </summary>
public const string ImportUIAFFromClipBoard = "ImportUIAFFromClipBoard";
public const string ImportUIAFFromClipBoard = nameof(ImportUIAFFromClipBoard);
private const string CategoryAchievement = "achievement";
private const string CategoryDailyNote = "dailynote";
@@ -168,7 +168,8 @@ internal static class Activation
private static async Task WaitMainWindowAsync()
{
await ThreadHelper.SwitchToMainThreadAsync();
_ = Ioc.Default.GetRequiredService<MainWindow>();
Ioc.Default.GetRequiredService<MainWindow>().Activate();
await Ioc.Default.GetRequiredService<IInfoBarService>().WaitInitializationAsync().ConfigureAwait(false);
Ioc.Default

View File

@@ -6,7 +6,6 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.UI;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using Snap.Hutao.Extension;
using Snap.Hutao.Message;
using Snap.Hutao.Win32;
using System.IO;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using System.Runtime.CompilerServices;
using System.Text;
namespace Snap.Hutao.Extension;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Snap.Hutao.Model.Metadata;
namespace Snap.Hutao.Model.Binding.Cultivation;

View File

@@ -14,6 +14,11 @@ internal abstract class Wish
/// </summary>
public string Name { get; set; } = default!;
/// <summary>
/// 总数
/// </summary>
public int TotalCount { get; set; }
/// <summary>
/// 统计开始时间
/// </summary>
@@ -47,9 +52,4 @@ internal abstract class Wish
/// 统计结束时间
/// </summary>
internal DateTimeOffset To { get; set; }
/// <summary>
/// 总数
/// </summary>
internal int TotalCount { get; set; }
}

View File

@@ -4,8 +4,6 @@
using Snap.Hutao.Model.Metadata.Converter;
using Snap.Hutao.Model.Primitive;
using Snap.Hutao.Web.Hutao.Model;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
namespace Snap.Hutao.Model.Binding.Hutao;

View File

@@ -4,7 +4,6 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.DependencyInjection;
using Snap.Hutao.Extension;
using Snap.Hutao.Web.Hoyolab;
using Snap.Hutao.Web.Hoyolab.Bbs.User;
using Snap.Hutao.Web.Hoyolab.Passport;

View File

@@ -1,9 +1,9 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Model.Entity.Primitive;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Snap.Hutao.Model.Entity.Primitive;
namespace Snap.Hutao.Model.Entity;

View File

@@ -1,7 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Extension;
using Snap.Hutao.Model.InterChange.GachaLog;
using Snap.Hutao.Model.Metadata.Abstraction;
using Snap.Hutao.Web.Hoyolab.Hk4e.Event.GachaInfo;

View File

@@ -1,9 +1,9 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Model.Entity.Primitive;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Snap.Hutao.Model.Entity.Primitive;
namespace Snap.Hutao.Model.Entity;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Core;
using Snap.Hutao.Extension;
namespace Snap.Hutao.Model.InterChange.Achievement;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Core;
using Snap.Hutao.Extension;
namespace Snap.Hutao.Model.InterChange.GachaLog;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Core;
using Snap.Hutao.Extension;
namespace Snap.Hutao.Model.InterChange.Inventory;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Control;
using Snap.Hutao.Extension;
namespace Snap.Hutao.Model.Metadata.Converter;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Control;
using Snap.Hutao.Extension;
namespace Snap.Hutao.Model.Metadata.Converter;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Control;
using Snap.Hutao.Control.Media;
using Snap.Hutao.Model.Intrinsic;
namespace Snap.Hutao.Model.Metadata.Converter;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Control;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding.AvatarProperty;
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Metadata.Annotation;

View File

@@ -12,6 +12,7 @@ namespace Snap.Hutao;
/// <summary>
/// Program class
/// </summary>
[SuppressMessage("", "SH001")]
public static partial class Program
{
[LibraryImport("Microsoft.ui.xaml.dll")]

View File

@@ -1284,6 +1284,15 @@ namespace Snap.Hutao.Resource.Localization {
}
}
/// <summary>
/// 查找类似 找不到 PowerShell 的安装目录 的本地化字符串。
/// </summary>
internal static string ServiceGameRegisteryInteropPowershellNotFound {
get {
return ResourceManager.GetString("ServiceGameRegisteryInteropPowershellNotFound", resourceCulture);
}
}
/// <summary>
/// 查找类似 找不到游戏配置文件 {0} 的本地化字符串。
/// </summary>

View File

@@ -525,6 +525,9 @@
<data name="ServiceGameRegisteryInteropLongPathsDisabled" xml:space="preserve">
<value>未开启长路径功能,无法设置注册表键值</value>
</data>
<data name="ServiceGameRegisteryInteropPowershellNotFound" xml:space="preserve">
<value>找不到 PowerShell 的安装目录</value>
</data>
<data name="ServiceGameSetMultiChannelConfigFileNotFound" xml:space="preserve">
<value>找不到游戏配置文件 {0}</value>
</data>

View File

@@ -6,7 +6,6 @@ using Microsoft.EntityFrameworkCore;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Core.Diagnostics;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Entity.Database;
using Snap.Hutao.Model.InterChange.Achievement;
using System.Collections.ObjectModel;

View File

@@ -1,7 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Microsoft.EntityFrameworkCore;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Model.Binding.User;
using Snap.Hutao.Model.Entity.Database;

View File

@@ -11,7 +11,6 @@ using Snap.Hutao.Web.Enka;
using Snap.Hutao.Web.Enka.Model;
using Snap.Hutao.Web.Hoyolab;
using EnkaAvatarInfo = Snap.Hutao.Web.Enka.Model.AvatarInfo;
using EnkaPlayerInfo = Snap.Hutao.Web.Enka.Model.PlayerInfo;
namespace Snap.Hutao.Service.AvatarInfo;

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Model.Binding.AvatarProperty;
using Snap.Hutao.Web.Enka.Model;
namespace Snap.Hutao.Service.AvatarInfo.Factory;

View File

@@ -4,7 +4,6 @@
using Snap.Hutao.Model.Binding.AvatarProperty;
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Metadata.Annotation;
using Snap.Hutao.Model.Metadata.Converter;
namespace Snap.Hutao.Service.AvatarInfo.Factory;

View File

@@ -6,7 +6,6 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.Entity.Database;

View File

@@ -5,7 +5,6 @@ using CommunityToolkit.Mvvm.Messaging;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Extension;
using Snap.Hutao.Message;
using Snap.Hutao.Model.Binding.User;
using Snap.Hutao.Model.Entity;

View File

@@ -3,7 +3,6 @@
using Snap.Hutao.Core.Database;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding.Gacha;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.Entity.Database;

View File

@@ -7,7 +7,6 @@ using Microsoft.EntityFrameworkCore;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Core.Diagnostics;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding;
using Snap.Hutao.Model.Binding.Gacha;
using Snap.Hutao.Model.Entity;

View File

@@ -8,7 +8,6 @@ using Snap.Hutao.Core;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Core.IO.Ini;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding.LaunchGame;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.Entity.Database;

View File

@@ -1,6 +1,7 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Microsoft.Extensions.Primitives;
using Microsoft.Win32;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Model.Entity;
@@ -18,6 +19,13 @@ internal static class RegistryInterop
private const string GenshinKey = @"HKEY_CURRENT_USER\Software\miHoYo\原神";
private const string SdkKey = "MIHOYOSDK_ADL_PROD_CN_h3123967166";
private static string? psExecutablePath;
private static string PsExecutablePath
{
get => psExecutablePath ??= GetPowershellLocation();
}
/// <summary>
/// 设置键值
/// 需要支持
@@ -79,4 +87,22 @@ internal static class RegistryInterop
return null;
}
private static string GetPowershellLocation()
{
string paths = Environment.GetEnvironmentVariable("Path")!;
foreach (StringSegment path in new StringTokenizer(paths, ';'.Enumerate().ToArray()))
{
if (path.HasValue && path.Length > 0)
{
if (path.AsSpan().IndexOf("WindowsPowerShell") > 0)
{
return Path.Combine(path.Value, "powershell.exe");
}
}
}
throw ThrowHelper.RuntimeEnvironment(SH.ServiceGameRegisteryInteropPowershellNotFound, null!);
}
}

View File

@@ -6,7 +6,6 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Extension;
using Snap.Hutao.Message;
using Snap.Hutao.Model.Entity.Database;
using Snap.Hutao.Web.Hoyolab;

View File

@@ -4,9 +4,7 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Snap.Hutao.Control;
using Snap.Hutao.Model.Binding;
using Snap.Hutao.Model.Metadata.Avatar;
using System.Collections;
namespace Snap.Hutao.View.Control;

View File

@@ -50,9 +50,16 @@ internal sealed partial class CommunityGameRecordDialog : ContentDialog
coreWebView2.SetCookie(user.CookieToken, user.Ltoken, null).SetMobileUserAgent();
jsInterface = new(coreWebView2, scope.ServiceProvider);
jsInterface.ClosePageRequested += OnClosePageRequested;
coreWebView2.Navigate("https://webstatic.mihoyo.com/app/community-game-records/index.html");
}
private void OnClosePageRequested()
{
ThreadHelper.InvokeOnMainThread(Hide);
}
private void OnContentDialogClosed(ContentDialog sender, ContentDialogClosedEventArgs args)
{
jsInterface = null;

View File

@@ -4,7 +4,6 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Snap.Hutao.Control;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding;
using Snap.Hutao.Service.GachaLog;
using Snap.Hutao.View.Control;

View File

@@ -9,8 +9,10 @@ namespace Snap.Hutao.View.Helper;
/// <summary>
/// 导航项帮助类
/// This type can't be internal
/// </summary>
[HighQuality]
[SuppressMessage("", "SH001")]
public sealed class NavHelper
{
private static readonly DependencyProperty NavigateToProperty = Property<NavHelper>.Attach<Type>("NavigateTo");

View File

@@ -1,9 +1,7 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Microsoft.UI.Xaml.Navigation;
using Snap.Hutao.Control;
using Snap.Hutao.Service.Navigation;
using Snap.Hutao.ViewModel;
namespace Snap.Hutao.View.Page;

View File

@@ -8,7 +8,6 @@ using Microsoft.UI.Xaml.Controls;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Core.IO;
using Snap.Hutao.Core.LifeCycle;
using Snap.Hutao.Extension;
using Snap.Hutao.Factory.Abstraction;
using Snap.Hutao.Model.InterChange.Achievement;
using Snap.Hutao.Service.Abstraction;

View File

@@ -2,6 +2,7 @@
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
@@ -9,8 +10,8 @@ using Microsoft.UI.Xaml.Media.Imaging;
using Snap.Hutao.Control.Extension;
using Snap.Hutao.Control.Media;
using Snap.Hutao.Core.IO.DataTransfer;
using Snap.Hutao.Extension;
using Snap.Hutao.Factory.Abstraction;
using Snap.Hutao.Message;
using Snap.Hutao.Model.Binding.AvatarProperty;
using Snap.Hutao.Model.Binding.User;
using Snap.Hutao.Model.Entity.Primitive;
@@ -38,7 +39,7 @@ namespace Snap.Hutao.ViewModel;
/// </summary>
[HighQuality]
[Injection(InjectAs.Scoped)]
internal sealed class AvatarPropertyViewModel : Abstraction.ViewModel
internal sealed class AvatarPropertyViewModel : Abstraction.ViewModel, IRecipient<UserChangedMessage>
{
private readonly IServiceProvider serviceProvider;
private readonly IUserService userService;
@@ -60,8 +61,10 @@ internal sealed class AvatarPropertyViewModel : Abstraction.ViewModel
RefreshFromEnkaApiCommand = new AsyncRelayCommand(RefreshByEnkaApiAsync);
RefreshFromHoyolabGameRecordCommand = new AsyncRelayCommand(RefreshByHoyolabGameRecordAsync);
RefreshFromHoyolabCalculateCommand = new AsyncRelayCommand(RefreshByHoyolabCalculateAsync);
ExportAsImageCommand = new AsyncRelayCommand<UIElement>(ExportAsImageAsync);
ExportAsImageCommand = new AsyncRelayCommand<FrameworkElement>(ExportAsImageAsync);
CultivateCommand = new AsyncRelayCommand<AvatarView>(CultivateAsync);
serviceProvider.GetRequiredService<IMessenger>().Register(this);
}
/// <summary>
@@ -104,6 +107,15 @@ internal sealed class AvatarPropertyViewModel : Abstraction.ViewModel
/// </summary>
public ICommand CultivateCommand { get; }
/// <inheritdoc/>
public void Receive(UserChangedMessage message)
{
if (UserAndUid.TryFromUser(userService.Current, out UserAndUid? userAndUid))
{
RefreshCoreAsync(userAndUid, RefreshOption.None, CancellationToken).SafeForget();
}
}
private Task OpenUIAsync()
{
if (UserAndUid.TryFromUser(userService.Current, out UserAndUid? userAndUid))
@@ -255,9 +267,9 @@ internal sealed class AvatarPropertyViewModel : Abstraction.ViewModel
}
}
private async Task ExportAsImageAsync(UIElement? element)
private async Task ExportAsImageAsync(FrameworkElement? element)
{
if (element != null)
if (element != null && element.IsLoaded)
{
RenderTargetBitmap bitmap = new();
await bitmap.RenderAsync(element);

View File

@@ -2,10 +2,7 @@
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.WinUI.UI;
using Microsoft.Extensions.DependencyInjection;
using Snap.Hutao.Extension;
using Snap.Hutao.Model;
using Snap.Hutao.Model.Binding.Cultivation;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Service.Abstraction;

View File

@@ -6,7 +6,6 @@ using Microsoft.UI.Xaml.Controls;
using Snap.Hutao.Control.Extension;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Core.IO;
using Snap.Hutao.Extension;
using Snap.Hutao.Factory.Abstraction;
using Snap.Hutao.Model.Binding.Gacha;
using Snap.Hutao.Model.Entity;

View File

@@ -5,11 +5,7 @@ using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
using Snap.Hutao.Core.IO;
using Snap.Hutao.Core.IO.Bits;
using Snap.Hutao.Service.User;
using Snap.Hutao.View.Dialog;
using Snap.Hutao.Web.Hoyolab;
using Snap.Hutao.Web.Hoyolab.Passport;
using Snap.Hutao.Web.Response;
namespace Snap.Hutao.ViewModel;

View File

@@ -6,7 +6,6 @@ using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Core.IO.DataTransfer;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding.User;
using Snap.Hutao.Service.Abstraction;
using Snap.Hutao.Service.Navigation;

View File

@@ -11,7 +11,6 @@ using Snap.Hutao.Core.Caching;
using Snap.Hutao.Core.IO;
using Snap.Hutao.Core.IO.Bits;
using Snap.Hutao.Core.Setting;
using Snap.Hutao.Extension;
using System.Collections.ObjectModel;
using System.IO;
using System.IO.Compression;

View File

@@ -5,7 +5,6 @@ using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.WinUI.UI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Primitives;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding.Hutao;
using Snap.Hutao.Model.Entity.Primitive;
using Snap.Hutao.Model.Intrinsic.Immutable;

View File

@@ -5,7 +5,6 @@ using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.WinUI.UI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Primitives;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding.Hutao;
using Snap.Hutao.Model.Entity.Primitive;
using Snap.Hutao.Model.Intrinsic.Immutable;

View File

@@ -3,16 +3,12 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Web.WebView2.Core;
using Snap.Hutao.Core.Database;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Binding.User;
using Snap.Hutao.Model.Entity.Database;
using Snap.Hutao.Service.User;
using Snap.Hutao.Web.Bridge.Model;
using Snap.Hutao.Web.Hoyolab;
using Snap.Hutao.Web.Hoyolab.Bbs.User;
using Snap.Hutao.Web.Hoyolab.DynamicSecret;
using Snap.Hutao.Web.Hoyolab.Passport;
using Snap.Hutao.Web.Hoyolab.Takumi.Auth;
using System.Runtime.InteropServices;
using System.Text;

View File

@@ -24,7 +24,7 @@ internal sealed class TypeValue
/// </summary>
/// <param name="type">类型</param>
/// <param name="value">值</param>
public TypeValue(PlayerProperty type,string? value)
public TypeValue(PlayerProperty type, string? value)
{
Type = type;
Value = value;

View File

@@ -9,6 +9,7 @@ namespace Snap.Hutao.Web.Hoyolab;
/// <summary>
/// 封装了米哈游的Cookie
/// </summary>
[HighQuality]
internal sealed partial class Cookie
{
private readonly SortedDictionary<string, string> inner;

View File

@@ -1,7 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Extension;
using Snap.Hutao.Web.Request;
using System.Net.Http;
using System.Text;
@@ -12,7 +11,7 @@ namespace Snap.Hutao.Web.Hoyolab;
/// Hoyolab HttpClient 拓展
/// </summary>
[HighQuality]
internal static class HoyolabHttpClientExtensions
internal static class HoyolabHttpClientExtension
{
/// <summary>
/// 设置用户的 Cookie

View File

@@ -2,7 +2,6 @@
// Licensed under the MIT license.
using Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient;
using Snap.Hutao.Extension;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Web.Hoyolab.Annotation;
using Snap.Hutao.Web.Hoyolab.DynamicSecret;

View File

@@ -19,6 +19,7 @@ namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord;
[HighQuality]
[UseDynamicSecret]
[HttpClient(HttpClientConfigration.XRpc)]
[PrimaryHttpMessageHandler(UseCookies = false)]
internal sealed class GameRecordClient
{
private readonly HttpClient httpClient;
@@ -100,11 +101,11 @@ internal sealed class GameRecordClient
/// <param name="schedule">1当期2上期</param>
/// <param name="token">取消令牌</param>
/// <returns>深渊信息</returns>
[ApiInformation(Cookie = CookieType.Ltoken, Salt = SaltType.X4)]
[ApiInformation(Cookie = CookieType.Cookie, Salt = SaltType.X4)]
public async Task<Response<SpiralAbyss.SpiralAbyss>> GetSpiralAbyssAsync(UserAndUid userAndUid, SpiralAbyssSchedule schedule, CancellationToken token = default)
{
Response<SpiralAbyss.SpiralAbyss>? resp = await httpClient
.SetUser(userAndUid.User, CookieType.Ltoken)
.SetUser(userAndUid.User, CookieType.Cookie)
.UseDynamicSecret(DynamicSecretVersion.Gen2, SaltType.X4, false)
.TryCatchGetFromJsonAsync<Response<SpiralAbyss.SpiralAbyss>>(ApiEndpoints.GameRecordSpiralAbyss(schedule, userAndUid.Uid), options, logger, token)
.ConfigureAwait(false);