diff --git a/MareSynchronos/Plugin.cs b/MareSynchronos/Plugin.cs index d392770..be5d3b0 100644 --- a/MareSynchronos/Plugin.cs +++ b/MareSynchronos/Plugin.cs @@ -73,7 +73,7 @@ public sealed class Plugin : IDalamudPlugin clientState, objectTable, framework, gameGui, condition, gameData, s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new DtrEntry(s.GetRequiredService>(), dtrBar, s.GetRequiredService(), - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcManager(s.GetRequiredService>(), pluginInterface, s.GetRequiredService(), s.GetRequiredService())); diff --git a/MareSynchronos/UI/DtrEntry.cs b/MareSynchronos/UI/DtrEntry.cs index a518d45..52f6301 100644 --- a/MareSynchronos/UI/DtrEntry.cs +++ b/MareSynchronos/UI/DtrEntry.cs @@ -3,6 +3,7 @@ using Dalamud.Plugin.Services; using MareSynchronos.MareConfiguration; using MareSynchronos.MareConfiguration.Configurations; using MareSynchronos.PlayerData.Pairs; +using MareSynchronos.Services.Mediator; using MareSynchronos.WebAPI; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -16,17 +17,19 @@ public sealed class DtrEntry : IDisposable, IHostedService private readonly ILogger _logger; private readonly IDtrBar _dtrBar; private readonly ConfigurationServiceBase _configService; + private readonly MareMediator _mareMediator; private Lazy _entry; private readonly PairManager _pairManager; private Task? _runTask; private string? _text; - public DtrEntry(ILogger logger, IDtrBar dtrBar, ConfigurationServiceBase configService, PairManager pairManager, ApiController apiController) + public DtrEntry(ILogger logger, IDtrBar dtrBar, ConfigurationServiceBase configService, MareMediator mareMediator, PairManager pairManager, ApiController apiController) { _logger = logger; _dtrBar = dtrBar; - _entry = new(() => _dtrBar.Get("Mare Synchronos")); + _entry = new(CreateEntry); _configService = configService; + _mareMediator = mareMediator; _pairManager = pairManager; _apiController = apiController; } @@ -63,6 +66,14 @@ public sealed class DtrEntry : IDisposable, IHostedService } } + private DtrBarEntry CreateEntry() + { + var entry = _dtrBar.Get("Mare Synchronos"); + entry.OnClick = () => _mareMediator.Publish(new UiToggleMessage(typeof(CompactUi))); + + return entry; + } + private void Clear() { if (!_entry.IsValueCreated) return; @@ -72,7 +83,7 @@ public sealed class DtrEntry : IDisposable, IHostedService _entry.Value.Shown = false; _entry.Value.Text = null; _entry.Value.Dispose(); - _entry = new(() => _dtrBar.Get("Mare Synchronos")); + _entry = new(CreateEntry); } private async Task RunAsync() @@ -87,7 +98,7 @@ public sealed class DtrEntry : IDisposable, IHostedService private void Update() { - if (!_configService.Current.EnableDtrEntry) + if (!_configService.Current.EnableDtrEntry || !_configService.Current.HasValidSetup()) { if (_entry.IsValueCreated && _entry.Value.Shown) {