diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/FolderViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/FolderViewModel.cs index 14a69c72..a939a890 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/FolderViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/FolderViewModel.cs @@ -10,34 +10,36 @@ namespace Snap.Hutao.ViewModel.Setting; internal sealed partial class FolderViewModel : ObservableObject { + private readonly ITaskContext taskContext; private readonly string folder; private string? size; public FolderViewModel(ITaskContext taskContext, string folder) { + this.taskContext = taskContext; this.folder = folder; SetFolderSizeAsync().SafeForget(); - - async ValueTask SetFolderSizeAsync() - { - await taskContext.SwitchToBackgroundAsync(); - long totalSize = 0; - - foreach (string file in Directory.EnumerateFiles(folder, "*.*", SearchOption.AllDirectories)) - { - totalSize += new FileInfo(file).Length; - } - - await taskContext.SwitchToMainThreadAsync(); - Size = SH.FormatViewModelSettingFolderSizeDescription(Converters.ToFileSizeString(totalSize)); - } } public string Folder { get => folder; } public string? Size { get => size; set => SetProperty(ref size, value); } + public async ValueTask SetFolderSizeAsync() + { + await taskContext.SwitchToBackgroundAsync(); + long totalSize = 0; + + foreach (string file in Directory.EnumerateFiles(folder, "*.*", SearchOption.AllDirectories)) + { + totalSize += new FileInfo(file).Length; + } + + await taskContext.SwitchToMainThreadAsync(); + Size = SH.FormatViewModelSettingFolderSizeDescription(Converters.ToFileSizeString(totalSize)); + } + [Command("OpenFolderCommand")] private async Task OpenDataFolderAsync() { diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs index cfcb4662..3fb521a0 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs @@ -284,6 +284,11 @@ internal sealed partial class SettingViewModel : Abstraction.ViewModel Directory.Delete(cacheFolder, true); } + if (DataFolderView is not null) + { + await DataFolderView.SetFolderSizeAsync().ConfigureAwait(false); + } + infoBarService.Information(SH.ViewModelSettingActionComplete); } }