private async Task HandleSenderToReceiverAsync(UserIdentifier senderIdentifier, UserIdentifier receiverIdentifier, string message, Guid sharedMessageId) { var friendshipState = (await _friendshipManager.GetFriendshipOrNullAsync(senderIdentifier, receiverIdentifier))?.State; if (friendshipState == null) { friendshipState = FriendshipState.Accepted; var receiverTenancyName = receiverIdentifier.TenantId.HasValue ? _tenantCache.Get(receiverIdentifier.TenantId.Value).TenancyName : null; var receiverUser = _userManager.GetUser(receiverIdentifier); await _friendshipManager.CreateFriendshipAsync( new Friendship( senderIdentifier, receiverIdentifier, receiverTenancyName, receiverUser.UserName, receiverUser.ProfilePictureId, friendshipState.Value) ); } if (friendshipState.Value == FriendshipState.Blocked) { //Do not send message if receiver banned the sender return; } var sentMessage = new ChatMessage( senderIdentifier, receiverIdentifier, ChatSide.Sender, message, ChatMessageReadState.Read, sharedMessageId, ChatMessageReadState.Unread ); Save(sentMessage); await _chatCommunicator.SendMessageToClient( _onlineClientManager.GetAllByUserId(senderIdentifier), sentMessage ); }
private void HandleSenderToReceiver(UserIdentifier senderIdentifier, UserIdentifier receiverIdentifier, string message) { var friendshipState = _friendshipManager.GetFriendshipOrNull(senderIdentifier, receiverIdentifier)?.State; if (friendshipState == null) { friendshipState = FriendshipState.Accepted; var receiverTenancyName = receiverIdentifier.TenantId.HasValue ? _tenantCache.Get(receiverIdentifier.TenantId.Value).TenancyName : null; var receiverUser = _userManager.GetUser(receiverIdentifier); _friendshipManager.CreateFriendship( new Friendship( senderIdentifier, receiverIdentifier, receiverTenancyName, receiverUser.UserName, receiverUser.Avatar, friendshipState.Value) ); } if (friendshipState.Value == FriendshipState.Blocked) { //Do not send message if receiver banned the sender return; } var sentMessage = new ChatMessage( senderIdentifier, receiverIdentifier, ChatSide.Sender, message, ChatMessageReadState.Read ); Save(sentMessage); _chatCommunicator.SendMessageToClient( _onlineClientManager.GetAllByUserId(senderIdentifier), sentMessage ); }