using System.Threading.Tasks; using BTCPayServer.HostedServices; using BTCPayServer.Logging; using BTCPayServer.Services.Stores; namespace BTCPayServer.Services.Mails { public class EmailSenderFactory { public ISettingsAccessor PoliciesSettings { get; } public Logs Logs { get; } private readonly IBackgroundJobClient _jobClient; private readonly SettingsRepository _settingsRepository; private readonly StoreRepository _storeRepository; public EmailSenderFactory(IBackgroundJobClient jobClient, SettingsRepository settingsSettingsRepository, ISettingsAccessor policiesSettings, StoreRepository storeRepository, Logs logs) { Logs = logs; _jobClient = jobClient; _settingsRepository = settingsSettingsRepository; PoliciesSettings = policiesSettings; _storeRepository = storeRepository; } public Task GetEmailSender(string storeId = null) { var serverSender = new ServerEmailSender(_settingsRepository, _jobClient, Logs); if (string.IsNullOrEmpty(storeId)) return Task.FromResult(serverSender); return Task.FromResult(new StoreEmailSender(_storeRepository, !PoliciesSettings.Settings.DisableStoresToUseServerEmailSettings ? serverSender : null, _jobClient, storeId, Logs)); } } }