diff --git a/MareSynchronos/FileCache/FileCompactor.cs b/MareSynchronos/FileCache/FileCompactor.cs index a5f3bea..7fea1a0 100644 --- a/MareSynchronos/FileCache/FileCompactor.cs +++ b/MareSynchronos/FileCache/FileCompactor.cs @@ -1,4 +1,5 @@ using MareSynchronos.MareConfiguration; +using MareSynchronos.Services; using Microsoft.Extensions.Logging; using System.Runtime.InteropServices; @@ -15,12 +16,14 @@ public sealed class FileCompactor private readonly ILogger _logger; private readonly MareConfigService _mareConfigService; + private readonly DalamudUtilService _dalamudUtilService; - public FileCompactor(ILogger logger, MareConfigService mareConfigService) + public FileCompactor(ILogger logger, MareConfigService mareConfigService, DalamudUtilService dalamudUtilService) { _clusterSizes = new(StringComparer.Ordinal); _logger = logger; _mareConfigService = mareConfigService; + _dalamudUtilService = dalamudUtilService; _efInfo = new WOF_FILE_COMPRESSION_INFO_V1 { Algorithm = CompressionAlgorithm.XPRESS8K, @@ -66,7 +69,7 @@ public sealed class FileCompactor { bool ntfs = isNTFS ?? string.Equals(new DriveInfo(new FileInfo(filePath).Directory!.Root.FullName).DriveFormat, "NTFS", StringComparison.OrdinalIgnoreCase); - if (Dalamud.Utility.Util.IsWine() || !ntfs) return new FileInfo(filePath).Length; + if (_dalamudUtilService.IsWine || !ntfs) return new FileInfo(filePath).Length; var clusterSize = GetClusterSize(filePath); if (clusterSize == -1) return new FileInfo(filePath).Length; @@ -79,7 +82,7 @@ public sealed class FileCompactor { await File.WriteAllBytesAsync(filePath, decompressedFile, token).ConfigureAwait(false); - if (Dalamud.Utility.Util.IsWine() || !_mareConfigService.Current.UseCompactor) + if (_dalamudUtilService.IsWine || !_mareConfigService.Current.UseCompactor) { return; } diff --git a/MareSynchronos/Services/DalamudUtilService.cs b/MareSynchronos/Services/DalamudUtilService.cs index 0429644..013a3df 100644 --- a/MareSynchronos/Services/DalamudUtilService.cs +++ b/MareSynchronos/Services/DalamudUtilService.cs @@ -1,6 +1,7 @@ using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Objects; using Dalamud.Plugin.Services; +using Dalamud.Utility; using FFXIVClientStructs.FFXIV.Client.Game.Character; using FFXIVClientStructs.FFXIV.Client.Game.Control; using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; @@ -92,8 +93,10 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber _toastGui.ShowError("Player out of range."); }).ConfigureAwait(false); }); + IsWine = Util.IsWine(); } + public bool IsWine { get; init; } public unsafe GameObject* GposeTarget => TargetSystem.Instance()->GPoseTarget; public unsafe DalamudGameObject? GposeTargetGameObject => GposeTarget == null ? null : _objectTable[GposeTarget->ObjectIndex]; public bool IsAnythingDrawing { get; private set; } = false; diff --git a/MareSynchronos/UI/IntroUI.cs b/MareSynchronos/UI/IntroUI.cs index d4beee9..43b88ea 100644 --- a/MareSynchronos/UI/IntroUI.cs +++ b/MareSynchronos/UI/IntroUI.cs @@ -28,6 +28,7 @@ public class IntroUi : WindowMediatorSubscriberBase private readonly CacheMonitor _cacheMonitor; private readonly Dictionary _languages = new(StringComparer.Ordinal) { { "English", "en" }, { "Deutsch", "de" }, { "Français", "fr" } }; private readonly ServerConfigurationManager _serverConfigurationManager; + private readonly DalamudUtilService _dalamudUtilService; private readonly UiSharedService _uiShared; private int _currentLanguage; private bool _readFirstPage; @@ -43,14 +44,14 @@ public class IntroUi : WindowMediatorSubscriberBase public IntroUi(ILogger logger, UiSharedService uiShared, MareConfigService configService, ApiController apiController, CacheMonitor fileCacheManager, ServerConfigurationManager serverConfigurationManager, MareMediator mareMediator, - PerformanceCollectorService performanceCollectorService) : base(logger, mareMediator, "Loporrit Setup", performanceCollectorService) + PerformanceCollectorService performanceCollectorService, DalamudUtilService dalamudUtilService) : base(logger, mareMediator, "Loporrit Setup", performanceCollectorService) { _uiShared = uiShared; _configService = configService; _apiController = apiController; _cacheMonitor = fileCacheManager; _serverConfigurationManager = serverConfigurationManager; - + _dalamudUtilService = dalamudUtilService; IsOpen = false; ShowCloseButton = false; RespectCloseHotkey = false; @@ -66,7 +67,7 @@ public class IntroUi : WindowMediatorSubscriberBase Mediator.Subscribe(this, (_) => IsOpen = false); Mediator.Subscribe(this, (_) => { - _configService.Current.UseCompactor = !Util.IsWine(); + _configService.Current.UseCompactor = !dalamudUtilService.IsWine; IsOpen = true; }); } @@ -189,7 +190,7 @@ public class IntroUi : WindowMediatorSubscriberBase { _uiShared.DrawFileScanState(); } - if (!Util.IsWine()) + if (!_dalamudUtilService.IsWine) { var useFileCompactor = _configService.Current.UseCompactor; if (ImGui.Checkbox("Use File Compactor", ref useFileCompactor)) diff --git a/MareSynchronos/UI/SettingsUi.cs b/MareSynchronos/UI/SettingsUi.cs index 2afe4fa..1822f50 100644 --- a/MareSynchronos/UI/SettingsUi.cs +++ b/MareSynchronos/UI/SettingsUi.cs @@ -39,10 +39,10 @@ public class SettingsUi : WindowMediatorSubscriberBase private readonly ApiController _apiController; private readonly IpcManager _ipcManager; private readonly CacheMonitor _cacheMonitor; + private readonly DalamudUtilService _dalamudUtilService; private readonly MareConfigService _configService; private readonly ConcurrentDictionary> _currentDownloads = new(); private readonly FileCompactor _fileCompactor; - private readonly DalamudUtilService _dalamudUtilService; private readonly FileUploadManager _fileTransferManager; private readonly FileTransferOrchestrator _fileTransferOrchestrator; private readonly FileCacheManager _fileCacheManager; @@ -96,6 +96,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _apiController = apiController; _ipcManager = ipcManager; _cacheMonitor = cacheMonitor; + _dalamudUtilService = dalamudUtilService; _fileCompactor = fileCompactor; _uiShared = uiShared; AllowClickthrough = false; @@ -798,7 +799,7 @@ public class SettingsUi : WindowMediatorSubscriberBase ImGui.TextUnformatted($"Currently utilized local storage: {UiSharedService.ByteToString(_cacheMonitor.FileCacheSize)}"); else ImGui.TextUnformatted($"Currently utilized local storage: Calculating..."); - bool isLinux = Util.IsWine(); + bool isLinux = _dalamudUtilService.IsWine; if (!isLinux) ImGui.TextUnformatted($"Remaining space free on drive: {UiSharedService.ByteToString(_cacheMonitor.FileCacheDriveFree)}"); bool useFileCompactor = _configService.Current.UseCompactor; @@ -822,8 +823,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _ = Task.Run(() => { _fileCompactor.CompactStorage(compress: true); - CancellationTokenSource cts = new(); - _cacheMonitor.RecalculateFileCacheSize(cts.Token); + _cacheMonitor.RecalculateFileCacheSize(CancellationToken.None); }); } UiSharedService.AttachToolTip("This will run compression on all files in your current storage folder." + Environment.NewLine @@ -835,7 +835,7 @@ public class SettingsUi : WindowMediatorSubscriberBase { _fileCompactor.CompactStorage(compress: false); CancellationTokenSource cts = new(); - _cacheMonitor.RecalculateFileCacheSize(cts.Token); + _cacheMonitor.RecalculateFileCacheSize(CancellationToken.None); }); } UiSharedService.AttachToolTip("This will run decompression on all files in your current storage folder.");