38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using IM_API.Domain.Events;
|
|
using IM_API.Dtos;
|
|
using IM_API.Dtos.Friend;
|
|
using IM_API.Hubs;
|
|
using IM_API.Interface.Services;
|
|
using MassTransit;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
|
|
namespace IM_API.Application.EventHandlers.RequestFriendHandler
|
|
{
|
|
public class RequestFriendSignalRHandler:IConsumer<RequestFriendEvent>
|
|
{
|
|
private readonly IHubContext<ChatHub> _hub;
|
|
private readonly IUserService _userService;
|
|
public RequestFriendSignalRHandler(IHubContext<ChatHub> hubContext, IUserService userService)
|
|
{
|
|
_hub = hubContext;
|
|
_userService = userService;
|
|
}
|
|
|
|
public async Task Consume(ConsumeContext<RequestFriendEvent> context)
|
|
{
|
|
var @event = context.Message;
|
|
var userInfo = await _userService.GetUserInfoAsync(@event.FromUserId);
|
|
var res = new HubResponse<FriendRequestResDto>("Event", new FriendRequestResDto()
|
|
{
|
|
RequestUser = @event.FromUserId,
|
|
ResponseUser = @event.ToUserId,
|
|
Created = DateTime.UtcNow,
|
|
Description = @event.Description,
|
|
Avatar = userInfo.Avatar,
|
|
NickName = userInfo.NickName
|
|
});
|
|
await _hub.Clients.User(@event.ToUserId.ToString()).SendAsync("ReceiveMessage", res);
|
|
}
|
|
}
|
|
}
|