using System; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Wino.Core.Domain.Interfaces; namespace Wino.Core.Services; /// /// Service responsible for initializing the SynchronizationManager during app startup. /// public class SynchronizationManagerInitializer : IInitializeAsync { private readonly IServiceProvider _serviceProvider; public SynchronizationManagerInitializer(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } public async Task InitializeAsync() { var synchronizerFactory = _serviceProvider.GetRequiredService(); var imapTestService = _serviceProvider.GetRequiredService(); var accountService = _serviceProvider.GetRequiredService(); var authenticationProvider = _serviceProvider.GetRequiredService(); var notificationBuilder = _serviceProvider.GetRequiredService(); // Cast to concrete type to access CreateNewSynchronizer method var concreteSynchronizerFactory = synchronizerFactory as SynchronizerFactory; await SynchronizationManager.Instance.InitializeAsync(concreteSynchronizerFactory, imapTestService, accountService, notificationBuilder, authenticationProvider); } }