using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Logging; namespace ModerationClient.Services; public class ClientContainer { private readonly ILogger _logger; private readonly MatrixAuthenticationService _authService; private readonly CommandLineConfiguration _cfg; public ClientContainer(ILogger logger, MatrixAuthenticationService authService, CommandLineConfiguration cfg) { _logger = logger; _authService = authService; _cfg = cfg; } private bool _isRunning = false; public void EnsureRunning() { if (_isRunning) return; _isRunning = true; _ = Task.Run(Run).ContinueWith(t => { if (t.IsFaulted) { _logger.LogError(t.Exception, "Error in client container task"); } return _isRunning = false; }); } private async Task Run() { Console.WriteLine("Running client view model loop..."); ArgumentNullException.ThrowIfNull(_authService.Homeserver, nameof(_authService.Homeserver)); } }