44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
using AutoMapper;
|
|
using IM_API.Application.Interfaces;
|
|
using IM_API.Domain.Events;
|
|
using IM_API.Dtos;
|
|
using IM_API.Hubs;
|
|
using IM_API.Models;
|
|
using IM_API.Tools;
|
|
using MassTransit;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
|
|
namespace IM_API.Application.EventHandlers.MessageCreatedHandler
|
|
{
|
|
public class SignalREventHandler : IConsumer<MessageCreatedEvent>
|
|
{
|
|
private readonly IHubContext<ChatHub> _hub;
|
|
private readonly IMapper _mapper;
|
|
public SignalREventHandler(IHubContext<ChatHub> hub, IMapper mapper)
|
|
{
|
|
_hub = hub;
|
|
_mapper = mapper;
|
|
}
|
|
|
|
public async Task Consume(ConsumeContext<MessageCreatedEvent> context)
|
|
{
|
|
var @event = context.Message;
|
|
if (@event.ChatType == Models.ChatType.PRIVATE)
|
|
{
|
|
MessageBaseDto messageBaseDto = new MessageBaseDto
|
|
{
|
|
MsgId = @event.MessageId.ToString(),
|
|
ChatType = @event.ChatType,
|
|
Content = @event.MessageContent,
|
|
GroupMemberId = null,
|
|
ReceiverId = @event.MsgRecipientId,
|
|
SenderId = @event.MsgSenderId,
|
|
TimeStamp = @event.MessageCreated,
|
|
Type = @event.MessageMsgType
|
|
};
|
|
await _hub.Clients.Users(@event.MsgRecipientId.ToString()).SendAsync("ReceiveMessage", messageBaseDto);
|
|
}
|
|
}
|
|
}
|
|
}
|