Example #1
0
        public async Task SendLike(
            bool isLiked,
            string messageId,
            PeerMessage peer,
            string sessionId,
            ILogger log)
        {
            var message = new LikeChatMessage
            {
                IsLiked   = isLiked,
                MessageId = messageId,
                Peer      = peer
            };

            var json = JsonConvert.SerializeObject(message);

            var likeUrl     = $"{_hostNameFree}/like-chat";
            var httpRequest = new HttpRequestMessage(HttpMethod.Post, likeUrl);

            httpRequest.Headers.Add(Constants.GroupIdHeaderKey, sessionId);
            httpRequest.Content = new StringContent(json);

            var response = await _http.SendAsync(httpRequest);

            if (!response.IsSuccessStatusCode)
            {
                IsInError = true;
                log.LogError($"Issue sending chat: {response.StatusCode} / {response.ReasonPhrase}");
                ErrorStatus = "Error connecting to Chat service, try to refresh the page and send again";
                return;
            }

            IsInError   = false;
            ErrorStatus = null;
            log.LogDebug($"Like sent {messageId} / {isLiked}");
            Status = "Like sent";
        }
Example #2
0
        public async Task ReceiveLikeChat(
            Action raiseUpdateEvent,
            Func <Task> saveChats,
            LikeChatMessage receivedMessage,
            IList <Chat> allChats,
            string peerId,
            ILogger log)
        {
            log.LogTrace("-> ChatProxy.ReceiveChat(ListOfChats)");

            if (receivedMessage.Key != SecretKey)
            {
                log.LogError("Received message with invalid key");
                return;
            }

            var likedChat = allChats.FirstOrDefault(c => c.UniqueId == receivedMessage.MessageId);

            if (likedChat != null)
            {
                var like = likedChat.Likes
                           .FirstOrDefault(l => l.PeerId == receivedMessage.Peer.PeerId);

                if (receivedMessage.IsLiked)
                {
                    if (like == null)
                    {
                        var customName = receivedMessage.Peer.CustomName;

                        if (receivedMessage.Peer.PeerId == peerId)
                        {
                            customName = Constants.YouName;
                        }

                        likedChat.Likes.Add(new PeerMessage
                        {
                            CustomName = customName,
                            PeerId     = receivedMessage.Peer.PeerId
                        });
                    }
                }
                else
                {
                    if (like != null)
                    {
                        likedChat.Likes.Remove(like);
                    }
                }
            }

            UpdateChatStyles(likedChat, peerId);

            if (raiseUpdateEvent != null)
            {
                raiseUpdateEvent();
            }

            if (saveChats != null)
            {
                await saveChats();
            }
        }