fix Bug 63765
This commit is contained in:
parent
9de902006a
commit
a5721ed885
@ -150,10 +150,10 @@ public class WorkContext
|
||||
emailSender.Init(properties);
|
||||
}
|
||||
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyEMailSenderSysName, new EmailSenderSink(emailSender, _serviceProvider));
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyMessengerSenderSysName, new JabberSenderSink(jabberSender, _serviceProvider));
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyTelegramSenderSysName, new TelegramSenderSink(telegramSender, _serviceProvider));
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyPushSenderSysName, new PushSenderSink(pushSender, _serviceProvider));
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyEMailSenderSysName, new EmailSenderSink(emailSender));
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyMessengerSenderSysName, new JabberSenderSink(jabberSender));
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyTelegramSenderSysName, new TelegramSenderSink(telegramSender));
|
||||
NotifyContext.RegisterSender(_dispatchEngine, Constants.NotifyPushSenderSysName, new PushSenderSink(pushSender));
|
||||
|
||||
NotifyEngine.AddAction<NotifyTransferRequest>();
|
||||
|
||||
|
@ -29,6 +29,6 @@ namespace ASC.Notify.Channels;
|
||||
public interface ISenderChannel
|
||||
{
|
||||
string SenderName { get; }
|
||||
Task<SendResponse> DirectSend(INoticeMessage message);
|
||||
Task SendAsync(INoticeMessage message);
|
||||
Task<SendResponse> DirectSend(INoticeMessage message, IServiceScope serviceScope);
|
||||
Task SendAsync(INoticeMessage message, IServiceScope serviceScope);
|
||||
}
|
||||
|
@ -45,16 +45,16 @@ public class SenderChannel : ISenderChannel
|
||||
_firstSink = AddSink(_firstSink, dispatcherSink);
|
||||
}
|
||||
|
||||
public async Task SendAsync(INoticeMessage message)
|
||||
public async Task SendAsync(INoticeMessage message, IServiceScope serviceScope)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(message);
|
||||
|
||||
await _firstSink.ProcessMessageAsync(message);
|
||||
await _firstSink.ProcessMessageAsync(message, serviceScope);
|
||||
}
|
||||
|
||||
public async Task<SendResponse> DirectSend(INoticeMessage message)
|
||||
public async Task<SendResponse> DirectSend(INoticeMessage message, IServiceScope serviceScope)
|
||||
{
|
||||
return await _senderSink.ProcessMessage(message);
|
||||
return await _senderSink.ProcessMessage(message, serviceScope);
|
||||
}
|
||||
|
||||
private ISink AddSink(ISink firstSink, ISink addedSink)
|
||||
|
@ -29,16 +29,14 @@ namespace ASC.Core.Notify;
|
||||
public class EmailSenderSink : Sink
|
||||
{
|
||||
private static readonly string _senderName = Configuration.Constants.NotifyEMailSenderSysName;
|
||||
private readonly INotifySender _sender;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly INotifySender _sender;
|
||||
|
||||
public EmailSenderSink(INotifySender sender, IServiceProvider serviceProvider)
|
||||
public EmailSenderSink(INotifySender sender)
|
||||
{
|
||||
_sender = sender ?? throw new ArgumentNullException(nameof(sender));
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message)
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message, IServiceScope scope)
|
||||
{
|
||||
if (message.Recipient.Addresses == null || message.Recipient.Addresses.Length == 0)
|
||||
{
|
||||
@ -48,7 +46,6 @@ public class EmailSenderSink : Sink
|
||||
var responce = new SendResponse(message, _senderName, default(SendResult));
|
||||
try
|
||||
{
|
||||
await using var scope = _serviceProvider.CreateAsyncScope();
|
||||
var m = scope.ServiceProvider.GetRequiredService<EmailSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
|
||||
var result = await _sender.Send(m);
|
||||
|
||||
|
@ -43,7 +43,7 @@ public class DispatchEngine
|
||||
_logger.LogOnly(_logOnly);
|
||||
}
|
||||
|
||||
public async Task<SendResponse> Dispatch(INoticeMessage message, string senderName)
|
||||
public async Task<SendResponse> Dispatch(INoticeMessage message, string senderName, IServiceScope serviceScope)
|
||||
{
|
||||
var response = new SendResponse(message, senderName, SendResult.OK);
|
||||
if (!_logOnly)
|
||||
@ -51,7 +51,7 @@ public class DispatchEngine
|
||||
var sender = _context.GetSender(senderName);
|
||||
if (sender != null)
|
||||
{
|
||||
response = await sender.DirectSend(message);
|
||||
response = await sender.DirectSend(message, serviceScope);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -437,7 +437,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
|
||||
return preventresponse;
|
||||
}
|
||||
|
||||
await channel.SendAsync(noticeMessage);
|
||||
await channel.SendAsync(noticeMessage, serviceScope);
|
||||
|
||||
return new SendResponse(noticeMessage, channel.SenderName, SendResult.Inprogress);
|
||||
}
|
||||
|
@ -31,20 +31,18 @@ class JabberSenderSink : Sink
|
||||
private static readonly string _senderName = Configuration.Constants.NotifyMessengerSenderSysName;
|
||||
private readonly INotifySender _sender;
|
||||
|
||||
public JabberSenderSink(INotifySender sender, IServiceProvider serviceProvider)
|
||||
public JabberSenderSink(INotifySender sender)
|
||||
{
|
||||
_sender = sender ?? throw new ArgumentNullException(nameof(sender));
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message)
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message, IServiceScope scope)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = SendResult.OK;
|
||||
await using var scope = _serviceProvider.CreateAsyncScope();
|
||||
var m = scope.ServiceProvider.GetRequiredService<JabberSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
|
||||
|
||||
if (string.IsNullOrEmpty(m.Reciever))
|
||||
|
@ -35,22 +35,17 @@ class PushSenderSink : Sink
|
||||
private static readonly string _senderName = Constants.NotifyPushSenderSysName;
|
||||
private readonly INotifySender _sender;
|
||||
|
||||
public PushSenderSink(INotifySender sender, IServiceProvider serviceProvider)
|
||||
public PushSenderSink(INotifySender sender)
|
||||
{
|
||||
_sender = sender ?? throw new ArgumentNullException(nameof(sender));
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message)
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message, IServiceScope scope)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
var result = SendResult.OK;
|
||||
await using var scope = _serviceProvider.CreateAsyncScope();
|
||||
|
||||
var m = scope.ServiceProvider.GetRequiredService<PushSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
|
||||
if (string.IsNullOrEmpty(m.Reciever))
|
||||
{
|
||||
@ -100,7 +95,7 @@ public class PushSenderSinkMessageCreator : SinkMessageCreator
|
||||
{
|
||||
_tenantManager.SetCurrentTenant(Tenant.DefaultTenant);
|
||||
tenant = _tenantManager.GetCurrentTenant(false);
|
||||
}
|
||||
}
|
||||
|
||||
var user = _userManager.GetUsers(new Guid(message.Recipient.ID));
|
||||
var username = user.UserName;
|
||||
|
@ -37,13 +37,13 @@ class DispatchSink : Sink
|
||||
_senderName = senderName;
|
||||
}
|
||||
|
||||
public override Task<SendResponse> ProcessMessage(INoticeMessage message)
|
||||
public override Task<SendResponse> ProcessMessage(INoticeMessage message, IServiceScope serviceScope)
|
||||
{
|
||||
return _dispatcher.Dispatch(message, _senderName);
|
||||
return _dispatcher.Dispatch(message, _senderName, serviceScope);
|
||||
}
|
||||
|
||||
public override async Task ProcessMessageAsync(INoticeMessage message)
|
||||
public override async Task ProcessMessageAsync(INoticeMessage message, IServiceScope serviceScope)
|
||||
{
|
||||
await _dispatcher.Dispatch(message, _senderName);
|
||||
await _dispatcher.Dispatch(message, _senderName, serviceScope);
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,6 @@ namespace ASC.Notify.Sinks;
|
||||
public interface ISink
|
||||
{
|
||||
ISink NextSink { get; set; }
|
||||
Task<SendResponse> ProcessMessage(INoticeMessage message);
|
||||
Task ProcessMessageAsync(INoticeMessage message);
|
||||
Task<SendResponse> ProcessMessage(INoticeMessage message, IServiceScope serviceScope);
|
||||
Task ProcessMessageAsync(INoticeMessage message, IServiceScope serviceScope);
|
||||
}
|
||||
|
@ -35,10 +35,10 @@ public abstract class Sink : ISink
|
||||
{
|
||||
public ISink NextSink { get; set; }
|
||||
|
||||
public abstract Task<SendResponse> ProcessMessage(INoticeMessage message);
|
||||
public abstract Task<SendResponse> ProcessMessage(INoticeMessage message, IServiceScope serviceScope);
|
||||
|
||||
public virtual async Task ProcessMessageAsync(INoticeMessage message)
|
||||
public virtual async Task ProcessMessageAsync(INoticeMessage message, IServiceScope serviceScope)
|
||||
{
|
||||
await NextSink.ProcessMessageAsync(message);
|
||||
await NextSink.ProcessMessageAsync(message, serviceScope);
|
||||
}
|
||||
}
|
||||
|
@ -32,20 +32,18 @@ class TelegramSenderSink : Sink
|
||||
private readonly INotifySender _sender;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public TelegramSenderSink(INotifySender sender, IServiceProvider serviceProvider)
|
||||
public TelegramSenderSink(INotifySender sender)
|
||||
{
|
||||
_sender = sender ?? throw new ArgumentNullException(nameof(sender));
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message)
|
||||
public override async Task<SendResponse> ProcessMessage(INoticeMessage message, IServiceScope scope)
|
||||
{
|
||||
try
|
||||
{
|
||||
const SendResult result = SendResult.OK;
|
||||
|
||||
await using var scope = _serviceProvider.CreateAsyncScope();
|
||||
var m = scope.ServiceProvider.GetRequiredService<TelegramSenderSinkMessageCreator>().CreateNotifyMessage(message, _senderName);
|
||||
await _sender.Send(m);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user