reduce hitches and do some other changes to FSW

This commit is contained in:
Stanley Dimant
2024-02-15 11:22:18 +01:00
committed by Loporrit
parent e98d5ce1ea
commit f9ca55db43
17 changed files with 140 additions and 94 deletions

View File

@@ -68,6 +68,11 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase
{ {
try try
{ {
while (_dalamudUtil.IsOnFrameworkThread && !token.IsCancellationRequested)
{
await Task.Delay(1).ConfigureAwait(false);
}
RecalculateFileCacheSize(token); RecalculateFileCacheSize(token);
} }
catch catch
@@ -272,18 +277,41 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase
} }
} }
if (changes.Any(c => c.Value.ChangeType == WatcherChangeTypes.Deleted)) HandleChanges(changes);
{ }
lock (_fileDbManager)
{
foreach (var change in changes)
{
Logger.LogDebug("FSW Change: {change} = {val}", change.Key, change.Value);
_ = _fileDbManager.GetFileCacheByPath(change.Key);
}
_fileDbManager.WriteOutFullCsv(); private void HandleChanges(Dictionary<string, WatcherChange> changes)
{
lock (_fileDbManager)
{
var deletedEntries = changes.Where(c => c.Value.ChangeType == WatcherChangeTypes.Deleted).Select(c => c.Key);
var renamedEntries = changes.Where(c => c.Value.ChangeType == WatcherChangeTypes.Renamed);
var remainingEntries = changes.Where(c => c.Value.ChangeType != WatcherChangeTypes.Deleted).Select(c => c.Key);
foreach (var entry in deletedEntries)
{
Logger.LogDebug("FSW Change: Deletion - {val}", entry);
} }
foreach (var entry in renamedEntries)
{
Logger.LogDebug("FSW Change: Renamed - {oldVal} => {val}", entry.Value.OldPath, entry.Key);
}
foreach (var entry in remainingEntries)
{
Logger.LogDebug("FSW Change: Creation or Change - {val}", entry);
}
var allChanges = deletedEntries
.Concat(renamedEntries.Select(c => c.Value.OldPath!))
.Concat(renamedEntries.Select(c => c.Key))
.Concat(remainingEntries)
.ToArray();
_ = _fileDbManager.GetFileCachesByPaths(allChanges);
_fileDbManager.WriteOutFullCsv();
} }
} }
@@ -315,24 +343,7 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase
} }
} }
lock (_fileDbManager) HandleChanges(changes);
{
foreach (var change in changes)
{
Logger.LogDebug("FSW Change: {change} = {val}", change.Key, change.Value);
if (change.Value.ChangeType == WatcherChangeTypes.Deleted)
{
_fileDbManager.GetFileCacheByPath(change.Key);
}
else
{
if (change.Value.OldPath != null) _fileDbManager.GetFileCacheByPath(change.Value.OldPath);
_fileDbManager.CreateFileEntry(change.Key);
}
}
_fileDbManager.WriteOutFullCsv();
}
} }
public void InvokeScan() public void InvokeScan()
@@ -397,7 +408,7 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase
} }
FileCacheSize = Directory.EnumerateFiles(_configService.Current.CacheFolder) FileCacheSize = Directory.EnumerateFiles(_configService.Current.CacheFolder)
.AsParallel().Sum(f => .Sum(f =>
{ {
token.ThrowIfCancellationRequested(); token.ThrowIfCancellationRequested();

View File

@@ -20,6 +20,7 @@ public sealed class FileCacheManager : IHostedService
private readonly MareMediator _mareMediator; private readonly MareMediator _mareMediator;
private readonly string _csvPath; private readonly string _csvPath;
private readonly ConcurrentDictionary<string, List<FileCacheEntity>> _fileCaches = new(StringComparer.Ordinal); private readonly ConcurrentDictionary<string, List<FileCacheEntity>> _fileCaches = new(StringComparer.Ordinal);
private readonly SemaphoreSlim _getCachesByPathsSemaphore = new(1, 1);
private readonly object _fileWriteLock = new(); private readonly object _fileWriteLock = new();
private readonly IpcManager _ipcManager; private readonly IpcManager _ipcManager;
private readonly ILogger<FileCacheManager> _logger; private readonly ILogger<FileCacheManager> _logger;
@@ -64,9 +65,9 @@ public sealed class FileCacheManager : IHostedService
List<FileCacheEntity> output = []; List<FileCacheEntity> output = [];
if (_fileCaches.TryGetValue(hash, out var fileCacheEntities)) if (_fileCaches.TryGetValue(hash, out var fileCacheEntities))
{ {
foreach (var filecache in fileCacheEntities.ToList()) foreach (var fileCache in fileCacheEntities.ToList())
{ {
var validated = GetValidatedFileCache(filecache); var validated = GetValidatedFileCache(fileCache);
if (validated != null) output.Add(validated); if (validated != null) output.Add(validated);
} }
} }
@@ -79,7 +80,7 @@ public sealed class FileCacheManager : IHostedService
_mareMediator.Publish(new HaltScanMessage(nameof(ValidateLocalIntegrity))); _mareMediator.Publish(new HaltScanMessage(nameof(ValidateLocalIntegrity)));
_logger.LogInformation("Validating local storage"); _logger.LogInformation("Validating local storage");
var cacheEntries = _fileCaches.SelectMany(v => v.Value).Where(v => v.IsCacheEntry).ToList(); var cacheEntries = _fileCaches.SelectMany(v => v.Value).Where(v => v.IsCacheEntry).ToList();
List<FileCacheEntity> brokenEntities = new(); List<FileCacheEntity> brokenEntities = [];
int i = 0; int i = 0;
foreach (var fileCache in cacheEntries) foreach (var fileCache in cacheEntries)
{ {
@@ -176,32 +177,44 @@ public sealed class FileCacheManager : IHostedService
public Dictionary<string, FileCacheEntity?> GetFileCachesByPaths(string[] paths) public Dictionary<string, FileCacheEntity?> GetFileCachesByPaths(string[] paths)
{ {
var cleanedPaths = paths.Distinct(StringComparer.OrdinalIgnoreCase).ToDictionary(p => p, _getCachesByPathsSemaphore.Wait();
p => p.Replace("/", "\\", StringComparison.OrdinalIgnoreCase)
.Replace(_ipcManager.PenumbraModDirectory!,
_ipcManager.PenumbraModDirectory!.EndsWith('\\') ? (PenumbraPrefix + "\\") : PenumbraPrefix,
StringComparison.OrdinalIgnoreCase),
StringComparer.OrdinalIgnoreCase);
Dictionary<string, FileCacheEntity?> result = new(StringComparer.OrdinalIgnoreCase); try
var dict = _fileCaches.SelectMany(f => f.Value).Where(f => f.PrefixedFilePath.StartsWith(PenumbraPrefix, StringComparison.Ordinal))
.ToDictionary(d => d.PrefixedFilePath, d => d, StringComparer.Ordinal);
foreach (var entry in cleanedPaths)
{ {
if (dict.TryGetValue(entry.Value, out var entity)) var cleanedPaths = paths.Distinct(StringComparer.OrdinalIgnoreCase).ToDictionary(p => p,
{ p => p.Replace("/", "\\", StringComparison.OrdinalIgnoreCase)
var validatedCache = GetValidatedFileCache(entity); .Replace(_ipcManager.PenumbraModDirectory!, PenumbraPrefix, StringComparison.OrdinalIgnoreCase)
result.Add(entry.Key, validatedCache); .Replace(_configService.Current.CacheFolder, CachePrefix, StringComparison.OrdinalIgnoreCase)
} .Replace("\\\\", "\\", StringComparison.Ordinal),
else StringComparer.OrdinalIgnoreCase);
{
result.Add(entry.Key, CreateFileEntry(entry.Key));
}
}
return result; Dictionary<string, FileCacheEntity?> result = new(StringComparer.OrdinalIgnoreCase);
var dict = _fileCaches.SelectMany(f => f.Value)
.ToDictionary(d => d.PrefixedFilePath, d => d, StringComparer.Ordinal);
foreach (var entry in cleanedPaths)
{
if (dict.TryGetValue(entry.Value, out var entity))
{
var validatedCache = GetValidatedFileCache(entity);
result.Add(entry.Key, validatedCache);
}
else
{
if (!entry.Value.Contains(CachePrefix, StringComparison.Ordinal))
result.Add(entry.Key, CreateFileEntry(entry.Key));
else
result.Add(entry.Key, CreateCacheEntry(entry.Key));
}
}
return result;
}
finally
{
_getCachesByPathsSemaphore.Release();
}
} }
public void RemoveHashedFile(string hash, string prefixedFilePath) public void RemoveHashedFile(string hash, string prefixedFilePath)
@@ -281,8 +294,6 @@ public sealed class FileCacheManager : IHostedService
try try
{ {
RemoveHashedFile(fileCache.Hash, fileCache.PrefixedFilePath); RemoveHashedFile(fileCache.Hash, fileCache.PrefixedFilePath);
FileInfo fileInfo = new(fileCache.ResolvedFilepath);
FileInfo oldCache = fileInfo;
var extensionPath = fileCache.ResolvedFilepath.ToUpper(CultureInfo.InvariantCulture) + "." + ext; var extensionPath = fileCache.ResolvedFilepath.ToUpper(CultureInfo.InvariantCulture) + "." + ext;
File.Move(fileCache.ResolvedFilepath, extensionPath, overwrite: true); File.Move(fileCache.ResolvedFilepath, extensionPath, overwrite: true);
var newHashedEntity = new FileCacheEntity(fileCache.Hash, fileCache.PrefixedFilePath + "." + ext, DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture)); var newHashedEntity = new FileCacheEntity(fileCache.Hash, fileCache.PrefixedFilePath + "." + ext, DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture));
@@ -329,9 +340,9 @@ public sealed class FileCacheManager : IHostedService
private FileCacheEntity? GetValidatedFileCache(FileCacheEntity fileCache) private FileCacheEntity? GetValidatedFileCache(FileCacheEntity fileCache)
{ {
var resulingFileCache = ReplacePathPrefixes(fileCache); var resultingFileCache = ReplacePathPrefixes(fileCache);
resulingFileCache = Validate(resulingFileCache); resultingFileCache = Validate(resultingFileCache);
return resulingFileCache; return resultingFileCache;
} }
private FileCacheEntity ReplacePathPrefixes(FileCacheEntity fileCache) private FileCacheEntity ReplacePathPrefixes(FileCacheEntity fileCache)

View File

@@ -121,7 +121,7 @@ public sealed class Plugin : IDalamudPlugin
collection.AddScoped<WindowMediatorSubscriberBase, EditProfileUi>((s) => new EditProfileUi(s.GetRequiredService<ILogger<EditProfileUi>>(), collection.AddScoped<WindowMediatorSubscriberBase, EditProfileUi>((s) => new EditProfileUi(s.GetRequiredService<ILogger<EditProfileUi>>(),
s.GetRequiredService<MareMediator>(), s.GetRequiredService<ApiController>(), pluginInterface.UiBuilder, s.GetRequiredService<UiSharedService>(), s.GetRequiredService<MareMediator>(), s.GetRequiredService<ApiController>(), pluginInterface.UiBuilder, s.GetRequiredService<UiSharedService>(),
s.GetRequiredService<FileDialogManager>(), s.GetRequiredService<ServerConfigurationManager>(), s.GetRequiredService<MareProfileManager>())); s.GetRequiredService<FileDialogManager>(), s.GetRequiredService<ServerConfigurationManager>(), s.GetRequiredService<MareProfileManager>(), s.GetRequiredService<PerformanceCollectorService>()));
collection.AddScoped<WindowMediatorSubscriberBase, PopupHandler>(); collection.AddScoped<WindowMediatorSubscriberBase, PopupHandler>();
collection.AddScoped<IPopupHandler, ReportPopupHandler>(); collection.AddScoped<IPopupHandler, ReportPopupHandler>();
collection.AddScoped<IPopupHandler, BanUserPopupHandler>(); collection.AddScoped<IPopupHandler, BanUserPopupHandler>();

View File

@@ -6,12 +6,14 @@ namespace MareSynchronos.Services.Mediator;
public abstract class WindowMediatorSubscriberBase : Window, IMediatorSubscriber, IDisposable public abstract class WindowMediatorSubscriberBase : Window, IMediatorSubscriber, IDisposable
{ {
protected readonly ILogger _logger; protected readonly ILogger _logger;
private readonly PerformanceCollectorService _performanceCollectorService;
protected WindowMediatorSubscriberBase(ILogger logger, MareMediator mediator, string name) : base(name) protected WindowMediatorSubscriberBase(ILogger logger, MareMediator mediator, string name,
PerformanceCollectorService performanceCollectorService) : base(name)
{ {
_logger = logger; _logger = logger;
Mediator = mediator; Mediator = mediator;
_performanceCollectorService = performanceCollectorService;
_logger.LogTrace("Creating {type}", GetType()); _logger.LogTrace("Creating {type}", GetType());
Mediator.Subscribe<UiToggleMessage>(this, (msg) => Mediator.Subscribe<UiToggleMessage>(this, (msg) =>
@@ -31,6 +33,13 @@ public abstract class WindowMediatorSubscriberBase : Window, IMediatorSubscriber
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
public override void Draw()
{
_performanceCollectorService.LogPerformance(this, "Draw", DrawInternal);
}
protected abstract void DrawInternal();
public virtual Task StopAsync(CancellationToken cancellationToken) public virtual Task StopAsync(CancellationToken cancellationToken)
{ {
return Task.CompletedTask; return Task.CompletedTask;

View File

@@ -18,10 +18,11 @@ public class UiFactory
private readonly PairManager _pairManager; private readonly PairManager _pairManager;
private readonly ServerConfigurationManager _serverConfigManager; private readonly ServerConfigurationManager _serverConfigManager;
private readonly MareProfileManager _mareProfileManager; private readonly MareProfileManager _mareProfileManager;
private readonly PerformanceCollectorService _performanceCollectorService;
public UiFactory(ILoggerFactory loggerFactory, MareMediator mareMediator, ApiController apiController, public UiFactory(ILoggerFactory loggerFactory, MareMediator mareMediator, ApiController apiController,
UiSharedService uiSharedService, PairManager pairManager, ServerConfigurationManager serverConfigManager, UiSharedService uiSharedService, PairManager pairManager, ServerConfigurationManager serverConfigManager,
MareProfileManager mareProfileManager) MareProfileManager mareProfileManager, PerformanceCollectorService performanceCollectorService)
{ {
_loggerFactory = loggerFactory; _loggerFactory = loggerFactory;
_mareMediator = mareMediator; _mareMediator = mareMediator;
@@ -30,23 +31,24 @@ public class UiFactory
_pairManager = pairManager; _pairManager = pairManager;
_serverConfigManager = serverConfigManager; _serverConfigManager = serverConfigManager;
_mareProfileManager = mareProfileManager; _mareProfileManager = mareProfileManager;
_performanceCollectorService = performanceCollectorService;
} }
public SyncshellAdminUI CreateSyncshellAdminUi(GroupFullInfoDto dto) public SyncshellAdminUI CreateSyncshellAdminUi(GroupFullInfoDto dto)
{ {
return new SyncshellAdminUI(_loggerFactory.CreateLogger<SyncshellAdminUI>(), _mareMediator, return new SyncshellAdminUI(_loggerFactory.CreateLogger<SyncshellAdminUI>(), _mareMediator,
_apiController, _uiSharedService, _pairManager, dto); _apiController, _uiSharedService, _pairManager, dto, _performanceCollectorService);
} }
public StandaloneProfileUi CreateStandaloneProfileUi(Pair pair) public StandaloneProfileUi CreateStandaloneProfileUi(Pair pair)
{ {
return new StandaloneProfileUi(_loggerFactory.CreateLogger<StandaloneProfileUi>(), _mareMediator, return new StandaloneProfileUi(_loggerFactory.CreateLogger<StandaloneProfileUi>(), _mareMediator,
_uiSharedService, _serverConfigManager, _mareProfileManager, _pairManager, pair); _uiSharedService, _serverConfigManager, _mareProfileManager, _pairManager, pair, _performanceCollectorService);
} }
public PermissionWindowUI CreatePermissionPopupUi(Pair pair) public PermissionWindowUI CreatePermissionPopupUi(Pair pair)
{ {
return new PermissionWindowUI(_loggerFactory.CreateLogger<PermissionWindowUI>(), pair, return new PermissionWindowUI(_loggerFactory.CreateLogger<PermissionWindowUI>(), pair,
_mareMediator, _uiSharedService, _apiController); _mareMediator, _uiSharedService, _apiController, _performanceCollectorService);
} }
} }

View File

@@ -59,7 +59,9 @@ public class CompactUi : WindowMediatorSubscriberBase
private bool _wasOpen; private bool _wasOpen;
public CompactUi(ILogger<CompactUi> logger, UiSharedService uiShared, MareConfigService configService, ApiController apiController, PairManager pairManager, ChatService chatService, public CompactUi(ILogger<CompactUi> logger, UiSharedService uiShared, MareConfigService configService, ApiController apiController, PairManager pairManager, ChatService chatService,
ServerConfigurationManager serverManager, MareMediator mediator, FileUploadManager fileTransferManager, UidDisplayHandler uidDisplayHandler) : base(logger, mediator, "###LoporritSyncMainUI") ServerConfigurationManager serverManager, MareMediator mediator, FileUploadManager fileTransferManager, UidDisplayHandler uidDisplayHandler,
PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "###LoporritSyncMainUI", performanceCollectorService)
{ {
_uiShared = uiShared; _uiShared = uiShared;
_configService = configService; _configService = configService;
@@ -101,7 +103,7 @@ public class CompactUi : WindowMediatorSubscriberBase
}; };
} }
public override void Draw() protected override void DrawInternal()
{ {
/*if (_apiController.ServerInfo.AccentColor.HasValue) /*if (_apiController.ServerInfo.AccentColor.HasValue)
{ {

View File

@@ -2,6 +2,7 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using ImGuiNET; using ImGuiNET;
using MareSynchronos.Services;
using MareSynchronos.Services.Mediator; using MareSynchronos.Services.Mediator;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Numerics; using System.Numerics;
@@ -14,8 +15,8 @@ public class PopupHandler : WindowMediatorSubscriberBase
private readonly HashSet<IPopupHandler> _handlers; private readonly HashSet<IPopupHandler> _handlers;
private IPopupHandler? _currentHandler = null; private IPopupHandler? _currentHandler = null;
public PopupHandler(ILogger<PopupHandler> logger, MareMediator mediator, IEnumerable<IPopupHandler> popupHandlers) public PopupHandler(ILogger<PopupHandler> logger, MareMediator mediator, IEnumerable<IPopupHandler> popupHandlers, PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "MarePopupHandler") : base(logger, mediator, "MarePopupHandler", performanceCollectorService)
{ {
Flags = ImGuiWindowFlags.NoBringToFrontOnFocus Flags = ImGuiWindowFlags.NoBringToFrontOnFocus
| ImGuiWindowFlags.NoDecoration | ImGuiWindowFlags.NoDecoration
@@ -46,7 +47,7 @@ public class PopupHandler : WindowMediatorSubscriberBase
}); });
} }
public override void Draw() protected override void DrawInternal()
{ {
if (_currentHandler == null) return; if (_currentHandler == null) return;

View File

@@ -31,7 +31,8 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase
private ObjectKind _selectedObjectTab; private ObjectKind _selectedObjectTab;
private bool _showModal = false; private bool _showModal = false;
public DataAnalysisUi(ILogger<DataAnalysisUi> logger, MareMediator mediator, CharacterAnalyzer characterAnalyzer, IpcManager ipcManager) : base(logger, mediator, "Mare Character Data Analysis") public DataAnalysisUi(ILogger<DataAnalysisUi> logger, MareMediator mediator, CharacterAnalyzer characterAnalyzer, IpcManager ipcManager, PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "Mare Character Data Analysis", performanceCollectorService)
{ {
_characterAnalyzer = characterAnalyzer; _characterAnalyzer = characterAnalyzer;
_ipcManager = ipcManager; _ipcManager = ipcManager;
@@ -56,7 +57,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase
_conversionProgress.ProgressChanged += ConversionProgress_ProgressChanged; _conversionProgress.ProgressChanged += ConversionProgress_ProgressChanged;
} }
public override void Draw() protected override void DrawInternal()
{ {
if (_conversionTask != null && !_conversionTask.IsCompleted) if (_conversionTask != null && !_conversionTask.IsCompleted)
{ {

View File

@@ -22,7 +22,8 @@ public class DownloadUi : WindowMediatorSubscriberBase
private readonly ConcurrentDictionary<GameObjectHandler, bool> _uploadingPlayers = new(); private readonly ConcurrentDictionary<GameObjectHandler, bool> _uploadingPlayers = new();
public DownloadUi(ILogger<DownloadUi> logger, DalamudUtilService dalamudUtilService, MareConfigService configService, public DownloadUi(ILogger<DownloadUi> logger, DalamudUtilService dalamudUtilService, MareConfigService configService,
FileUploadManager fileTransferManager, MareMediator mediator, UiSharedService uiShared) : base(logger, mediator, "Loporrit Downloads") FileUploadManager fileTransferManager, MareMediator mediator, UiSharedService uiShared, PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "Loporrit Downloads", performanceCollectorService)
{ {
_dalamudUtilService = dalamudUtilService; _dalamudUtilService = dalamudUtilService;
_configService = configService; _configService = configService;
@@ -66,7 +67,7 @@ public class DownloadUi : WindowMediatorSubscriberBase
}); });
} }
public override void Draw() protected override void DrawInternal()
{ {
if (_configService.Current.ShowTransferWindow) if (_configService.Current.ShowTransferWindow)
{ {

View File

@@ -36,7 +36,8 @@ public class EditProfileUi : WindowMediatorSubscriberBase
public EditProfileUi(ILogger<EditProfileUi> logger, MareMediator mediator, public EditProfileUi(ILogger<EditProfileUi> logger, MareMediator mediator,
ApiController apiController, IUiBuilder uiBuilder, UiSharedService uiSharedService, ApiController apiController, IUiBuilder uiBuilder, UiSharedService uiSharedService,
FileDialogManager fileDialogManager, ServerConfigurationManager serverConfigurationManager, FileDialogManager fileDialogManager, ServerConfigurationManager serverConfigurationManager,
MareProfileManager mareProfileManager) : base(logger, mediator, "Loporrit Edit Profile###LoporritSyncEditProfileUI") MareProfileManager mareProfileManager, PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "Loporrit Edit Profile###LoporritSyncEditProfileUI", performanceCollectorService)
{ {
IsOpen = false; IsOpen = false;
this.SizeConstraints = new() this.SizeConstraints = new()
@@ -64,7 +65,7 @@ public class EditProfileUi : WindowMediatorSubscriberBase
}); });
} }
public override void Draw() protected override void DrawInternal()
{ {
_uiSharedService.BigText("Current Profile (as saved on server)"); _uiSharedService.BigText("Current Profile (as saved on server)");

View File

@@ -20,7 +20,8 @@ public class GposeUi : WindowMediatorSubscriberBase
public GposeUi(ILogger<GposeUi> logger, MareCharaFileManager mareCharaFileManager, public GposeUi(ILogger<GposeUi> logger, MareCharaFileManager mareCharaFileManager,
DalamudUtilService dalamudUtil, FileDialogManager fileDialogManager, MareConfigService configService, DalamudUtilService dalamudUtil, FileDialogManager fileDialogManager, MareConfigService configService,
MareMediator mediator) : base(logger, mediator, "Loporrit Gpose Import UI###LoporritSyncGposeUI") MareMediator mediator, PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "Loporrit Gpose Import UI###LoporritSyncGposeUI", performanceCollectorService)
{ {
_mareCharaFileManager = mareCharaFileManager; _mareCharaFileManager = mareCharaFileManager;
_dalamudUtil = dalamudUtil; _dalamudUtil = dalamudUtil;
@@ -37,7 +38,7 @@ public class GposeUi : WindowMediatorSubscriberBase
}; };
} }
public override void Draw() protected override void DrawInternal()
{ {
if (!_dalamudUtil.IsInGpose) IsOpen = false; if (!_dalamudUtil.IsInGpose) IsOpen = false;

View File

@@ -7,6 +7,7 @@ using MareSynchronos.FileCache;
using MareSynchronos.Localization; using MareSynchronos.Localization;
using MareSynchronos.MareConfiguration; using MareSynchronos.MareConfiguration;
using MareSynchronos.MareConfiguration.Models; using MareSynchronos.MareConfiguration.Models;
using MareSynchronos.Services;
using MareSynchronos.Services.Mediator; using MareSynchronos.Services.Mediator;
using MareSynchronos.Services.ServerConfiguration; using MareSynchronos.Services.ServerConfiguration;
using MareSynchronos.WebAPI; using MareSynchronos.WebAPI;
@@ -41,7 +42,8 @@ public class IntroUi : WindowMediatorSubscriberBase
private RegisterReplyDto? _registrationReply; private RegisterReplyDto? _registrationReply;
public IntroUi(ILogger<IntroUi> logger, UiSharedService uiShared, MareConfigService configService, ApiController apiController, public IntroUi(ILogger<IntroUi> logger, UiSharedService uiShared, MareConfigService configService, ApiController apiController,
CacheMonitor fileCacheManager, ServerConfigurationManager serverConfigurationManager, MareMediator mareMediator) : base(logger, mareMediator, "Loporrit Setup") CacheMonitor fileCacheManager, ServerConfigurationManager serverConfigurationManager, MareMediator mareMediator,
PerformanceCollectorService performanceCollectorService) : base(logger, mareMediator, "Loporrit Setup", performanceCollectorService)
{ {
_uiShared = uiShared; _uiShared = uiShared;
_configService = configService; _configService = configService;
@@ -69,7 +71,7 @@ public class IntroUi : WindowMediatorSubscriberBase
}); });
} }
public override void Draw() protected override void DrawInternal()
{ {
if (_uiShared.IsInGpose) return; if (_uiShared.IsInGpose) return;

View File

@@ -4,6 +4,7 @@ using ImGuiNET;
using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Data.Enum;
using MareSynchronos.API.Data.Extensions; using MareSynchronos.API.Data.Extensions;
using MareSynchronos.PlayerData.Pairs; using MareSynchronos.PlayerData.Pairs;
using MareSynchronos.Services;
using MareSynchronos.Services.Mediator; using MareSynchronos.Services.Mediator;
using MareSynchronos.Utils; using MareSynchronos.Utils;
using MareSynchronos.WebAPI; using MareSynchronos.WebAPI;
@@ -20,7 +21,8 @@ public class PermissionWindowUI : WindowMediatorSubscriberBase
private UserPermissions _ownPermissions; private UserPermissions _ownPermissions;
public PermissionWindowUI(ILogger<PermissionWindowUI> logger, Pair pair, MareMediator mediator, UiSharedService uiSharedService, public PermissionWindowUI(ILogger<PermissionWindowUI> logger, Pair pair, MareMediator mediator, UiSharedService uiSharedService,
ApiController apiController) : base(logger, mediator, "Permissions for " + pair.UserData.AliasOrUID + "###LoporritSyncPermissions" + pair.UserData.UID) ApiController apiController, PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "Permissions for " + pair.UserData.AliasOrUID + "###LoporritSyncPermissions" + pair.UserData.UID, performanceCollectorService)
{ {
Pair = pair; Pair = pair;
_uiSharedService = uiSharedService; _uiSharedService = uiSharedService;
@@ -35,7 +37,7 @@ public class PermissionWindowUI : WindowMediatorSubscriberBase
IsOpen = true; IsOpen = true;
} }
public override void Draw() protected override void DrawInternal()
{ {
var paused = _ownPermissions.IsPaused(); var paused = _ownPermissions.IsPaused();
var disableSounds = _ownPermissions.IsDisableSounds(); var disableSounds = _ownPermissions.IsDisableSounds();

View File

@@ -30,7 +30,7 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase
public PopoutProfileUi(ILogger<PopoutProfileUi> logger, MareMediator mediator, UiSharedService uiSharedService, public PopoutProfileUi(ILogger<PopoutProfileUi> logger, MareMediator mediator, UiSharedService uiSharedService,
ServerConfigurationManager serverManager, MareConfigService mareConfigService, ServerConfigurationManager serverManager, MareConfigService mareConfigService,
MareProfileManager mareProfileManager, PairManager pairManager) : base(logger, mediator, "###LoporritSyncPopoutProfileUI") MareProfileManager mareProfileManager, PairManager pairManager, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "###LoporritSyncPopoutProfileUI", performanceCollectorService)
{ {
_uiSharedService = uiSharedService; _uiSharedService = uiSharedService;
_serverManager = serverManager; _serverManager = serverManager;
@@ -78,7 +78,7 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase
IsOpen = false; IsOpen = false;
} }
public override void Draw() protected override void DrawInternal()
{ {
if (_pair == null) return; if (_pair == null) return;

View File

@@ -81,7 +81,7 @@ public class SettingsUi : WindowMediatorSubscriberBase
FileTransferOrchestrator fileTransferOrchestrator, FileTransferOrchestrator fileTransferOrchestrator,
FileCacheManager fileCacheManager, FileCacheManager fileCacheManager,
FileCompactor fileCompactor, ApiController apiController, FileCompactor fileCompactor, ApiController apiController,
IpcManager ipcManager, CacheMonitor cacheMonitor) : base(logger, mediator, "Loporrit Settings") IpcManager ipcManager, CacheMonitor cacheMonitor) : base(logger, mediator, "Loporrit Settings", performanceCollector)
{ {
_configService = configService; _configService = configService;
_mareCharaFileManager = mareCharaFileManager; _mareCharaFileManager = mareCharaFileManager;
@@ -120,7 +120,7 @@ public class SettingsUi : WindowMediatorSubscriberBase
public CharacterData? LastCreatedCharacterData { private get; set; } public CharacterData? LastCreatedCharacterData { private get; set; }
private ApiController ApiController => _uiShared.ApiController; private ApiController ApiController => _uiShared.ApiController;
public override void Draw() protected override void DrawInternal()
{ {
_ = _uiShared.DrawOtherPluginState(); _ = _uiShared.DrawOtherPluginState();

View File

@@ -26,8 +26,9 @@ public class StandaloneProfileUi : WindowMediatorSubscriberBase
private IDalamudTextureWrap? _textureWrap; private IDalamudTextureWrap? _textureWrap;
public StandaloneProfileUi(ILogger<StandaloneProfileUi> logger, MareMediator mediator, UiSharedService uiBuilder, public StandaloneProfileUi(ILogger<StandaloneProfileUi> logger, MareMediator mediator, UiSharedService uiBuilder,
ServerConfigurationManager serverManager, MareProfileManager mareProfileManager, PairManager pairManager, Pair pair) ServerConfigurationManager serverManager, MareProfileManager mareProfileManager, PairManager pairManager, Pair pair,
: base(logger, mediator, "Profile of " + pair.UserData.AliasOrUID + "##LoporritSyncStandaloneProfileUI" + pair.UserData.AliasOrUID) PerformanceCollectorService performanceCollector)
: base(logger, mediator, "Profile of " + pair.UserData.AliasOrUID + "##LoporritSyncStandaloneProfileUI" + pair.UserData.AliasOrUID, performanceCollector)
{ {
_uiSharedService = uiBuilder; _uiSharedService = uiBuilder;
_serverManager = serverManager; _serverManager = serverManager;
@@ -45,7 +46,7 @@ public class StandaloneProfileUi : WindowMediatorSubscriberBase
public Pair Pair { get; init; } public Pair Pair { get; init; }
public override void Draw() protected override void DrawInternal()
{ {
try try
{ {

View File

@@ -7,6 +7,7 @@ using MareSynchronos.API.Data.Enum;
using MareSynchronos.API.Data.Extensions; using MareSynchronos.API.Data.Extensions;
using MareSynchronos.API.Dto.Group; using MareSynchronos.API.Dto.Group;
using MareSynchronos.PlayerData.Pairs; using MareSynchronos.PlayerData.Pairs;
using MareSynchronos.Services;
using MareSynchronos.Services.Mediator; using MareSynchronos.Services.Mediator;
using MareSynchronos.WebAPI; using MareSynchronos.WebAPI;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@@ -31,8 +32,8 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
private int _pruneDays = 14; private int _pruneDays = 14;
public SyncshellAdminUI(ILogger<SyncshellAdminUI> logger, MareMediator mediator, ApiController apiController, public SyncshellAdminUI(ILogger<SyncshellAdminUI> logger, MareMediator mediator, ApiController apiController,
UiSharedService uiSharedService, PairManager pairManager, GroupFullInfoDto groupFullInfo) UiSharedService uiSharedService, PairManager pairManager, GroupFullInfoDto groupFullInfo, PerformanceCollectorService performanceCollectorService)
: base(logger, mediator, "Syncshell Admin Panel (" + groupFullInfo.GroupAliasOrGID + ")") : base(logger, mediator, "Syncshell Admin Panel (" + groupFullInfo.GroupAliasOrGID + ")", performanceCollectorService)
{ {
GroupFullInfo = groupFullInfo; GroupFullInfo = groupFullInfo;
_apiController = apiController; _apiController = apiController;
@@ -53,7 +54,7 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
public GroupFullInfoDto GroupFullInfo { get; private set; } public GroupFullInfoDto GroupFullInfo { get; private set; }
public override void Draw() protected override void DrawInternal()
{ {
if (!_isModerator && !_isOwner) return; if (!_isModerator && !_isOwner) return;