Ejemplo n.º 1
0
        public async Task GetConversation(int contactId)
        {
            int userId = _authService.GetCurrentUserId();
            //Leave Old Chatroom if in one
            string oldChatRoomId = await _chatHubService.GetCurrentUserRoom(userId);

            if (oldChatRoomId != null)
            {
                await Groups.RemoveFromGroupAsync(this.Context.ConnectionId, oldChatRoomId);
            }

            //Join Chatroom
            string chatRoomId = await _chatHubService.AddOrUpdateUserRoom(userId, contactId);

            await Groups.AddToGroupAsync(this.Context.ConnectionId, chatRoomId);

            try
            {
                //DB Call
                List <Message> messages = _service.GetConversation(userId, contactId);
                //send initial conversation individually, so user 1 doesnt refresh on user 2 join
                if (messages == null)
                {
                    await Clients.Caller.SendAsync("ReceiveMessages", null);
                }
                else
                {
                    await Clients.Caller.SendAsync("ReceiveMessages", messages);
                }
            }
            catch (Exception ex)
            {
                await Clients.Caller.SendAsync("ReceiveMessages", null, ex);
            }
        }