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 Microsoft.AspNetCore.SignalR; namespace IM_API.Application.EventHandlers { public class SignalREventHandler : IEventHandler { private readonly IHubContext _hub; private readonly IMapper _mapper; public SignalREventHandler(IHubContext hub, IMapper mapper) { _hub = hub; _mapper = mapper; } public async Task Handle(MessageCreatedEvent @event) { if(@event.ChatType == Models.ChatType.PRIVATE) { MessageBaseDto messageBaseDto = _mapper.Map(_mapper.Map(@event)); await _hub.Clients.Users(@event.MsgRecipientId.ToString()).SendAsync("ReceiveMessage", messageBaseDto); } } } }