diff --git a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/FileSystemContext.cs b/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/FileSystemContext.cs deleted file mode 100644 index 628d15df..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/FileSystemContext.cs +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using Snap.Hutao.Context.FileSystem.Location; -using System.IO; - -namespace Snap.Hutao.Context.FileSystem; - -/// -/// 文件系统上下文 -/// -/// 路径位置类型 -internal abstract class FileSystemContext -{ - private readonly IFileSystemLocation location; - - /// - /// 初始化文件系统上下文 - /// - /// 指定的文件系统位置 - public FileSystemContext(IFileSystemLocation location) - { - this.location = location; - EnsureDirectory(); - } - - /// - /// 创建文件,若已存在文件,则不会创建 - /// - /// 文件 - public void CreateFileOrIgnore(string file) - { - file = Locate(file); - if (!File.Exists(file)) - { - File.Create(file).Dispose(); - } - } - - /// - /// 创建文件夹,若已存在文件,则不会创建 - /// - /// 文件夹 - public void CreateFolderOrIgnore(string folder) - { - folder = Locate(folder); - if (!Directory.Exists(folder)) - { - Directory.CreateDirectory(folder); - } - } - - /// - /// 尝试删除文件夹 - /// - /// 文件夹 - public void DeleteFolderOrIgnore(string folder) - { - folder = Locate(folder); - if (Directory.Exists(folder)) - { - Directory.Delete(folder, true); - } - } - - /// - /// 检查文件是否存在 - /// - /// 文件名称 - /// 是否存在 - public bool FileExists(string file) - { - return File.Exists(Locate(file)); - } - - /// - /// 检查文件是否存在 - /// - /// 文件夹名称 - /// 文件名称 - /// 是否存在 - public bool FileExists(string folder, string file) - { - return File.Exists(Locate(folder, file)); - } - - /// - /// 检查文件是否存在 - /// - /// 文件夹名称 - /// 是否存在 - public bool FolderExists(string folder) - { - return Directory.Exists(Locate(folder)); - } - - /// - /// 定位根目录中的文件或文件夹 - /// - /// 文件或文件夹 - /// 绝对路径 - public string Locate(string fileOrFolder) - { - return Path.GetFullPath(fileOrFolder, location.GetPath()); - } - - /// - /// 定位根目录下子文件夹中的文件 - /// - /// 文件夹 - /// 文件 - /// 绝对路径 - public string Locate(string folder, string file) - { - return Path.GetFullPath(Path.Combine(folder, file), location.GetPath()); - } - - /// - /// 将文件移动到指定的子目录 - /// - /// 文件 - /// 文件夹 - /// 是否覆盖 - /// 是否成功 当文件不存在时会失败 - public bool MoveToFolderOrIgnore(string file, string folder, bool overwrite = true) - { - string target = Locate(folder, file); - file = Locate(file); - - if (File.Exists(file)) - { - File.Move(file, target, overwrite); - return true; - } - - return false; - } - - /// - /// 等效于 ,但路径经过解析 - /// - /// 文件名 - /// 文件流 - public FileStream OpenRead(string file) - { - return File.OpenRead(Locate(file)); - } - - /// - /// 等效于 ,但路径经过解析 - /// - /// 文件名 - /// 文件流 - public FileStream Create(string file) - { - return File.Create(Locate(file)); - } - - /// - /// 检查根目录 - /// - /// 是否创建了路径 - private bool EnsureDirectory() - { - string folder = location.GetPath(); - if (!Directory.Exists(folder)) - { - Directory.CreateDirectory(folder); - return true; - } - - return false; - } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/HutaoContext.cs b/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/HutaoContext.cs deleted file mode 100644 index 43299fb7..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/HutaoContext.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Context.FileSystem; - -/// -/// 我的文档上下文 -/// -[Injection(InjectAs.Transient)] -internal class HutaoContext : FileSystemContext -{ - /// - public HutaoContext(Location.HutaoLocation myDocument) - : base(myDocument) - { - } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/HutaoLocation.cs b/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/HutaoLocation.cs deleted file mode 100644 index 2f517b5e..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/HutaoLocation.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using System.IO; -using Windows.ApplicationModel; - -namespace Snap.Hutao.Context.FileSystem.Location; - -/// -/// 我的文档位置 -/// -[Injection(InjectAs.Transient)] -internal class HutaoLocation : IFileSystemLocation -{ - private string? path; - - /// - public string GetPath() - { - if (string.IsNullOrEmpty(path)) - { - string myDocument = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); -#if RELEASE - // 将测试版与正式版的文件目录分离 - string folderName = Package.Current.PublisherDisplayName == "DGP Studio CI" ? "HutaoAlpha" : "Hutao"; -#else - // 使得迁移能正常生成 - string folderName = "Hutao"; -#endif - path = Path.GetFullPath(Path.Combine(myDocument, folderName)); - } - - return path; - } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/IFileSystemLocation.cs b/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/IFileSystemLocation.cs deleted file mode 100644 index 5baf2b2b..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/IFileSystemLocation.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Context.FileSystem.Location; - -/// -/// 文件系统位置 -/// -public interface IFileSystemLocation -{ - /// - /// 获取路径 - /// - /// 路径 - string GetPath(); -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/Metadata.cs b/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/Metadata.cs deleted file mode 100644 index 5f967ce4..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/Location/Metadata.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using System.IO; - -namespace Snap.Hutao.Context.FileSystem.Location; - -/// -/// 我的文档位置 -/// -[Injection(InjectAs.Transient)] -internal class Metadata : IFileSystemLocation -{ - private string? path; - - /// - public string GetPath() - { - if (string.IsNullOrEmpty(path)) - { - string myDocument = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - path = Path.GetFullPath(Path.Combine(myDocument, "Hutao", "Metadata")); - } - - return path; - } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/MetadataContext.cs b/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/MetadataContext.cs deleted file mode 100644 index da417975..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Context/FileSystem/MetadataContext.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using Snap.Hutao.Context.FileSystem.Location; - -namespace Snap.Hutao.Context.FileSystem; - -/// -/// 元数据上下文 -/// -[Injection(InjectAs.Transient)] -internal class MetadataContext : FileSystemContext -{ - /// - public MetadataContext(Metadata metadata) - : base(metadata) - { - } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Image/CachedImage.cs b/src/Snap.Hutao/Snap.Hutao/Control/Image/CachedImage.cs index eae402f4..ef236fac 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Image/CachedImage.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Image/CachedImage.cs @@ -7,7 +7,6 @@ using Microsoft.UI.Xaml.Media.Imaging; using Snap.Hutao.Core.Caching; using Snap.Hutao.Extension; using System.Runtime.InteropServices; -using Windows.Storage; namespace Snap.Hutao.Control.Image; diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Image/CompositionImage.cs b/src/Snap.Hutao/Snap.Hutao/Control/Image/CompositionImage.cs index 0ce1bb7f..ae71b53d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Image/CompositionImage.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Image/CompositionImage.cs @@ -12,8 +12,6 @@ using Snap.Hutao.Service.Abstraction; using System.IO; using System.Net.Http; using System.Runtime.InteropServices; -using Windows.Storage; -using Windows.Storage.Streams; namespace Snap.Hutao.Control.Image; diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Image/Gradient.cs b/src/Snap.Hutao/Snap.Hutao/Control/Image/Gradient.cs index 98d4847a..51ef857a 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Image/Gradient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Image/Gradient.cs @@ -6,9 +6,7 @@ using Microsoft.UI.Composition; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Media; using System.IO; -using System.Numerics; using Windows.Graphics.Imaging; -using Windows.Storage; using Windows.Storage.Streams; namespace Snap.Hutao.Control.Image; @@ -28,8 +26,8 @@ public class Gradient : CompositionImage /// public GradientDirection BackgroundDirection { - get { return (GradientDirection)GetValue(BackgroundDirectionProperty); } - set { SetValue(BackgroundDirectionProperty, value); } + get => (GradientDirection)GetValue(BackgroundDirectionProperty); + set => SetValue(BackgroundDirectionProperty, value); } /// @@ -37,8 +35,8 @@ public class Gradient : CompositionImage /// public GradientDirection ForegroundDirection { - get { return (GradientDirection)GetValue(ForegroundDirectionProperty); } - set { SetValue(ForegroundDirectionProperty, value); } + get => (GradientDirection)GetValue(ForegroundDirectionProperty); + set => SetValue(ForegroundDirectionProperty, value); } /// diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Caching/IImageCache.cs b/src/Snap.Hutao/Snap.Hutao/Core/Caching/IImageCache.cs index 4d85f390..420a0ccc 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Caching/IImageCache.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Caching/IImageCache.cs @@ -1,8 +1,6 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. -using Windows.Storage; - namespace Snap.Hutao.Core.Caching; /// diff --git a/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs b/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs index 7037d8ef..2b8f6162 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs @@ -7,6 +7,7 @@ using Snap.Hutao.Core.Json; using Snap.Hutao.Extension; using Snap.Hutao.Web.Hoyolab.DynamicSecret; using System.Collections.Immutable; +using System.IO; using System.Text.Json.Serialization.Metadata; using Windows.ApplicationModel; @@ -70,6 +71,11 @@ internal static class CoreEnvironment /// public static readonly string FamilyName; + /// + /// 数据文件夹 + /// + public static readonly string DataFolder; + /// /// 默认的Json序列化选项 /// @@ -93,6 +99,7 @@ internal static class CoreEnvironment static CoreEnvironment() { + DataFolder = GetDocumentsHutaoPath(); Version = Package.Current.Id.Version.ToVersion(); FamilyName = Package.Current.Id.FamilyName; CommonUA = $"Snap Hutao/{Version}"; @@ -108,4 +115,19 @@ internal static class CoreEnvironment object? machineGuid = Registry.GetValue(CryptographyKey, MachineGuidValue, userName); return Md5Convert.ToHexString($"{userName}{machineGuid}"); } + + private static string GetDocumentsHutaoPath() + { + string myDocument = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); +#if RELEASE + // 将测试版与正式版的文件目录分离 + string folderName = Package.Current.PublisherDisplayName == "DGP Studio CI" ? "HutaoAlpha" : "Hutao"; +#else + // 使得迁移能正常生成 + string folderName = "Hutao"; +#endif + string path = Path.GetFullPath(Path.Combine(myDocument, folderName)); + Directory.CreateDirectory(path); + return path; + } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs index 9157672c..e911e636 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocConfiguration.cs @@ -3,7 +3,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; -using Snap.Hutao.Context.FileSystem; using Snap.Hutao.Model.Entity.Database; using System.Diagnostics; @@ -31,9 +30,7 @@ internal static class IocConfiguration /// 可继续操作的集合 public static IServiceCollection AddDatebase(this IServiceCollection services) { - HutaoContext myDocument = new(new()); - - string dbFile = myDocument.Locate("Userdata.db"); + string dbFile = System.IO.Path.Combine(CoreEnvironment.DataFolder, "Userdata.db"); string sqlConnectionString = $"Data Source={dbFile}"; // temporarily create a context diff --git a/src/Snap.Hutao/Snap.Hutao/Core/IO/Bits/BitsManager.cs b/src/Snap.Hutao/Snap.Hutao/Core/IO/Bits/BitsManager.cs index 7f52a8cf..d95816ab 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/IO/Bits/BitsManager.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/IO/Bits/BitsManager.cs @@ -2,11 +2,6 @@ // Licensed under the MIT license. using Microsoft.Extensions.DependencyInjection; -using Snap.Hutao.Core.IO; -using System.IO; -using System.Runtime.InteropServices; -using Windows.Win32; -using Windows.Win32.Foundation; using Windows.Win32.Networking.BackgroundIntelligentTransferService; namespace Snap.Hutao.Core.IO.Bits; diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs b/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs index 952635af..64468ddc 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using Microsoft.EntityFrameworkCore; -using Snap.Hutao.Context.FileSystem; using Snap.Hutao.Model.Entity.Database; using System.Collections.Concurrent; using System.Diagnostics; @@ -61,8 +60,8 @@ public sealed class LogEntryQueue : IDisposable private static LogDbContext InitializeDbContext() { - HutaoContext myDocument = new(new()); - LogDbContext logDbContext = LogDbContext.Create($"Data Source={myDocument.Locate("Log.db")}"); + string logDbName = System.IO.Path.Combine(CoreEnvironment.DataFolder, "Log.db"); + LogDbContext logDbContext = LogDbContext.Create($"Data Source={logDbName}"); if (logDbContext.Database.GetPendingMigrations().Any()) { Debug.WriteLine("[Debug] Performing LogDbContext Migrations"); @@ -70,7 +69,7 @@ public sealed class LogEntryQueue : IDisposable } // only raw sql can pass - logDbContext.Database.ExecuteSqlRaw("DELETE FROM logs WHERE Exception IS NULL"); + logDbContext.Logs.Where(log => log.Exception == null).ExecuteDelete(); return logDbContext; } diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContext.cs b/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContext.cs index db1c3f92..c99c1309 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContext.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContext.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using Microsoft.EntityFrameworkCore; -using Snap.Hutao.Model.Entity; using Snap.Hutao.Model.Entity.Configuration; namespace Snap.Hutao.Model.Entity.Database; diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContextDesignTimeFactory.cs b/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContextDesignTimeFactory.cs index 00d505a3..9c44c409 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContextDesignTimeFactory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Entity/Database/AppDbContextDesignTimeFactory.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using Microsoft.EntityFrameworkCore.Design; -using Snap.Hutao.Context.FileSystem; using Snap.Hutao.Model.Entity.Database; namespace Snap.Hutao.Context.Database; @@ -17,7 +16,7 @@ public class AppDbContextDesignTimeFactory : IDesignTimeDbContextFactory diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs index 9333814c..56fd454d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Metadata/MetadataService.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using Microsoft.Extensions.Caching.Memory; -using Snap.Hutao.Context.FileSystem; using Snap.Hutao.Core.Abstraction; using Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient; using Snap.Hutao.Core.Diagnostics; @@ -25,9 +24,9 @@ internal partial class MetadataService : IMetadataService, IMetadataInitializer, { private const string MetaFileName = "Meta.json"; + private readonly string metadataFolderPath; private readonly IInfoBarService infoBarService; private readonly HttpClient httpClient; - private readonly FileSystemContext metadataContext; private readonly JsonSerializerOptions options; private readonly ILogger logger; private readonly IMemoryCache memoryCache; @@ -44,24 +43,24 @@ internal partial class MetadataService : IMetadataService, IMetadataInitializer, /// /// 信息条服务 /// http客户端工厂 - /// 我的文档上下文 /// json序列化选项 /// 日志器 /// 内存缓存 public MetadataService( IInfoBarService infoBarService, IHttpClientFactory httpClientFactory, - MetadataContext metadataContext, JsonSerializerOptions options, ILogger logger, IMemoryCache memoryCache) { this.infoBarService = infoBarService; - this.metadataContext = metadataContext; this.options = options; this.logger = logger; this.memoryCache = memoryCache; httpClient = httpClientFactory.CreateClient(nameof(MetadataService)); + + metadataFolderPath = Path.Combine(Core.CoreEnvironment.DataFolder, "Metadata"); + Directory.CreateDirectory(metadataFolderPath); } /// @@ -111,7 +110,7 @@ internal partial class MetadataService : IMetadataService, IMetadataInitializer, await CheckMetadataAsync(metaMd5Map, token).ConfigureAwait(false); // save metadataFile - using (FileStream metaFileStream = metadataContext.Create(MetaFileName)) + using (FileStream metaFileStream = File.Create(Path.Combine(metadataFolderPath, MetaFileName))) { await JsonSerializer .SerializeAsync(metaFileStream, metaMd5Map, options, token) @@ -136,7 +135,7 @@ internal partial class MetadataService : IMetadataService, IMetadataInitializer, string fileFullName = $"{fileName}.json"; bool skip = false; - if (metadataContext.FileExists(fileFullName)) + if (File.Exists(Path.Combine(metadataFolderPath, fileFullName))) { skip = md5 == await GetFileMd5Async(fileFullName, token).ConfigureAwait(false); } @@ -152,7 +151,7 @@ internal partial class MetadataService : IMetadataService, IMetadataInitializer, private async Task GetFileMd5Async(string fileFullName, CancellationToken token) { - using (FileStream stream = metadataContext.OpenRead(fileFullName)) + using (FileStream stream = File.OpenRead(Path.Combine(metadataFolderPath, fileFullName))) { byte[] bytes = await MD5.Create() .ComputeHashAsync(stream, token) @@ -171,7 +170,7 @@ internal partial class MetadataService : IMetadataService, IMetadataInitializer, // Write stream while convert LF to CRLF using (StreamReader streamReader = new(sourceStream)) { - using (StreamWriter streamWriter = new(metadataContext.Create(fileFullName))) + using (StreamWriter streamWriter = new(File.Create(Path.Combine(metadataFolderPath, fileFullName)))) { while (await streamReader.ReadLineAsync(token).ConfigureAwait(false) is string line) { @@ -195,7 +194,7 @@ internal partial class MetadataService : IMetadataService, IMetadataInitializer, return Must.NotNull((T)value!); } - using (Stream fileStream = metadataContext.OpenRead($"{fileName}.json")) + using (Stream fileStream = File.OpenRead(Path.Combine(metadataFolderPath, $"{fileName}.json"))) { T? result = await JsonSerializer.DeserializeAsync(fileStream, options, token).ConfigureAwait(false); return memoryCache.Set(cacheKey, Must.NotNull(result!)); diff --git a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj index 59494b3b..36a31b6d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj +++ b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj @@ -163,11 +163,11 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolConverter.cs b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolConverter.cs index 96e302c0..ce75c022 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolConverter.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolConverter.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using CommunityToolkit.WinUI.UI.Converters; -using Microsoft.UI.Xaml; namespace Snap.Hutao.View.Converter; diff --git a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolRevertConverter.cs b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolRevertConverter.cs index cc94dda9..3a7393bc 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolRevertConverter.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyCollectionToBoolRevertConverter.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using CommunityToolkit.WinUI.UI.Converters; -using Microsoft.UI.Xaml; namespace Snap.Hutao.View.Converter; diff --git a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolConverter.cs b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolConverter.cs index 6b1b6ce1..96672edb 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolConverter.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolConverter.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using CommunityToolkit.WinUI.UI.Converters; -using Microsoft.UI.Xaml; namespace Snap.Hutao.View.Converter; diff --git a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolRevertConverter.cs b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolRevertConverter.cs index 6c262d44..61bf5dfa 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolRevertConverter.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Converter/EmptyObjectToBoolRevertConverter.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using CommunityToolkit.WinUI.UI.Converters; -using Microsoft.UI.Xaml; namespace Snap.Hutao.View.Converter; diff --git a/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityConverter.cs b/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityConverter.cs index da228832..3ea768b6 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityConverter.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityConverter.cs @@ -1,7 +1,6 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. -using CommunityToolkit.WinUI.UI.Converters; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Data; diff --git a/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityRevertConverter.cs b/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityRevertConverter.cs index bd3ae0be..43bbaa6f 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityRevertConverter.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Converter/Int32ToVisibilityRevertConverter.cs @@ -1,7 +1,6 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. -using CommunityToolkit.WinUI.UI.Converters; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Data; diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/ExperimentalFeaturesViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/ExperimentalFeaturesViewModel.cs index 41315ee0..3cb28db5 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/ExperimentalFeaturesViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/ExperimentalFeaturesViewModel.cs @@ -5,13 +5,9 @@ using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; -using Snap.Hutao.Context.FileSystem.Location; using Snap.Hutao.Factory.Abstraction; using Snap.Hutao.Model.Entity.Database; using Snap.Hutao.Service.Abstraction; -using Snap.Hutao.Service.User; -using Snap.Hutao.Web.Hutao; -using Snap.Hutao.Web.Hutao.Model.Post; using Windows.Storage; using Windows.System; @@ -23,19 +19,12 @@ namespace Snap.Hutao.ViewModel; [Injection(InjectAs.Scoped)] internal class ExperimentalFeaturesViewModel : ObservableObject { - private readonly IFileSystemLocation hutaoLocation; - /// /// 构造一个新的实验性功能视图模型 /// /// 异步命令工厂 - /// 数据文件夹 - public ExperimentalFeaturesViewModel( - IAsyncRelayCommandFactory asyncRelayCommandFactory, - HutaoLocation hutaoLocation) + public ExperimentalFeaturesViewModel(IAsyncRelayCommandFactory asyncRelayCommandFactory) { - this.hutaoLocation = hutaoLocation; - OpenCacheFolderCommand = asyncRelayCommandFactory.Create(OpenCacheFolderAsync); OpenDataFolderCommand = asyncRelayCommandFactory.Create(OpenDataFolderAsync); DeleteUsersCommand = asyncRelayCommandFactory.Create(DangerousDeleteUsersAsync); @@ -69,7 +58,7 @@ internal class ExperimentalFeaturesViewModel : ObservableObject private Task OpenDataFolderAsync() { - return Launcher.LaunchFolderPathAsync(hutaoLocation.GetPath()).AsTask(); + return Launcher.LaunchFolderPathAsync(Core.CoreEnvironment.DataFolder).AsTask(); } private async Task DangerousDeleteUsersAsync() diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs index 8a6cd738..90b41752 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs @@ -4,7 +4,6 @@ using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; -using Microsoft.Extensions.DependencyInjection; using Snap.Hutao.Core.Database; using Snap.Hutao.Core.Windowing; using Snap.Hutao.Factory.Abstraction; @@ -14,11 +13,7 @@ using Snap.Hutao.Model.Entity.Database; using Snap.Hutao.Service.GachaLog; using Snap.Hutao.Service.Game; using Snap.Hutao.Service.Game.Locator; -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; using System.IO; namespace Snap.Hutao.ViewModel; diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/SpiralAbyssRecordViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/SpiralAbyssRecordViewModel.cs index 6219fd20..2bdc6977 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/SpiralAbyssRecordViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/SpiralAbyssRecordViewModel.cs @@ -2,37 +2,22 @@ // Licensed under the MIT license. using CommunityToolkit.Mvvm.ComponentModel; -using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; -using CommunityToolkit.WinUI.UI; -using Microsoft.Extensions.Primitives; using Snap.Hutao.Control; -using Snap.Hutao.Extension; using Snap.Hutao.Factory.Abstraction; using Snap.Hutao.Message; -using Snap.Hutao.Model.Binding.Cultivation; -using Snap.Hutao.Model.Binding.Hutao; using Snap.Hutao.Model.Binding.SpiralAbyss; using Snap.Hutao.Model.Binding.User; using Snap.Hutao.Model.Entity; -using Snap.Hutao.Model.Intrinsic; using Snap.Hutao.Model.Metadata; -using Snap.Hutao.Model.Metadata.Weapon; using Snap.Hutao.Model.Primitive; using Snap.Hutao.Service.Abstraction; -using Snap.Hutao.Service.Cultivation; -using Snap.Hutao.Service.Hutao; using Snap.Hutao.Service.Metadata; using Snap.Hutao.Service.SpiralAbyss; using Snap.Hutao.Service.User; -using Snap.Hutao.View.Dialog; using Snap.Hutao.Web.Hutao; using Snap.Hutao.Web.Hutao.Model.Post; -using System.Collections.Immutable; using System.Collections.ObjectModel; -using CalcAvatarPromotionDelta = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.AvatarPromotionDelta; -using CalcClient = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.CalculateClient; -using CalcConsumption = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.Consumption; namespace Snap.Hutao.ViewModel; diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/TestViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/TestViewModel.cs index d9a70c52..561bae87 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/TestViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/TestViewModel.cs @@ -2,33 +2,17 @@ // Licensed under the MIT license. using CommunityToolkit.Mvvm.ComponentModel; -using CommunityToolkit.Mvvm.Input; -using CommunityToolkit.WinUI.UI; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Primitives; using Snap.Hutao.Control; using Snap.Hutao.Core.IO; using Snap.Hutao.Core.IO.Bits; using Snap.Hutao.Extension; using Snap.Hutao.Factory.Abstraction; -using Snap.Hutao.Model.Binding.Cultivation; -using Snap.Hutao.Model.Binding.Hutao; -using Snap.Hutao.Model.Intrinsic; -using Snap.Hutao.Model.Metadata.Weapon; -using Snap.Hutao.Model.Primitive; -using Snap.Hutao.Service.Abstraction; -using Snap.Hutao.Service.Cultivation; -using Snap.Hutao.Service.Hutao; -using Snap.Hutao.Service.Metadata; 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; -using System.Collections.Immutable; -using CalcAvatarPromotionDelta = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.AvatarPromotionDelta; -using CalcClient = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.CalculateClient; -using CalcConsumption = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.Consumption; namespace Snap.Hutao.ViewModel; diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSInterface.cs b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSInterface.cs index 18b8b510..c9836285 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSInterface.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/MiHoYoJSInterface.cs @@ -371,7 +371,7 @@ public class MiHoYoJSInterface if (result != null && param.Callback != null) { - await ExecuteCallbackScriptAsync(param.Callback, result.ToString(options)).ConfigureAwait(false); + await ExecuteCallbackScriptAsync(param.Callback, result.ToString()).ConfigureAwait(false); } } diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/DynamicSecret/DynamicSecretHandler.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/DynamicSecret/DynamicSecretHandler.cs index d791569f..a6ae0b79 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/DynamicSecret/DynamicSecretHandler.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/DynamicSecret/DynamicSecretHandler.cs @@ -3,7 +3,6 @@ using Snap.Hutao.Core.Convert; using Snap.Hutao.Web.Request; -using System.Collections.Immutable; using System.Net.Http; using System.Text;