From 405c0968dab57364f5289e07476ca5f809988161 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Mon, 10 Jul 2023 16:09:41 +0200 Subject: [PATCH] fix DtrBar removal/addition --- MareSynchronos/UI/DtrEntry.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/MareSynchronos/UI/DtrEntry.cs b/MareSynchronos/UI/DtrEntry.cs index 57f28d7..a050dd8 100644 --- a/MareSynchronos/UI/DtrEntry.cs +++ b/MareSynchronos/UI/DtrEntry.cs @@ -13,16 +13,18 @@ public sealed class DtrEntry : IDisposable, IHostedService private readonly ApiController _apiController; private readonly CancellationTokenSource _cancellationTokenSource = new(); private readonly ILogger _logger; + private readonly DtrBar _dtrBar; private readonly ConfigurationServiceBase _configService; - private readonly Lazy _entry; + private Lazy _entry; private readonly PairManager _pairManager; private Task? _runTask; private string? _text; public DtrEntry(ILogger logger, DtrBar dtrBar, ConfigurationServiceBase configService, PairManager pairManager, ApiController apiController) { - _entry = new(() => dtrBar.Get("Mare Synchronos")); _logger = logger; + _dtrBar = dtrBar; + _entry = new(() => _dtrBar.Get("Mare Synchronos")); _configService = configService; _pairManager = pairManager; _apiController = apiController; @@ -64,10 +66,14 @@ public sealed class DtrEntry : IDisposable, IHostedService private void Clear() { + if (!_entry.IsValueCreated) return; _text = null; + _logger.LogInformation("Clearing entry"); _entry.Value.Shown = false; _entry.Value.Text = null; + _entry.Value.Dispose(); + _entry = new(() => _dtrBar.Get("Mare Synchronos")); } private async Task RunAsync() @@ -84,8 +90,10 @@ public sealed class DtrEntry : IDisposable, IHostedService { if (!_configService.Current.EnableDtrEntry) { - if (_entry.Value.Shown) + if (_entry.IsValueCreated && _entry.Value.Shown) { + _logger.LogInformation("Disabling entry"); + Clear(); } return; @@ -93,6 +101,7 @@ public sealed class DtrEntry : IDisposable, IHostedService if (!_entry.Value.Shown) { + _logger.LogInformation("Showing entry"); _entry.Value.Shown = true; }