Пример #1
0
        // Handles the click event on 'sendBtn'
        private async void SendButton_Click(object sender, EventArgs e)
        {
            // Display sent message first
            var _msgText       = messageTextBox.Text;
            var _messageBubble = new MessageBubble(_activeUser, MessageType.Outgoing, _msgText);

            messageFlowLayoutPanel.Controls.Add(_messageBubble);
            messageTextBox.Clear();

            // Save message to database
            using (var _db = new MessengerContext())
            {
                _db.Users.Attach(_activeUser);
                _db.Conversations.Attach(_conversation);

                var _message = new Message()
                {
                    Sender = _activeUser,
                    Text   = _msgText
                };

                _conversation.Messages.Add(_message);

                // Assign updated Message list to object in db
                var _dbMessages = await _db.Conversations.FirstAsync(x => x.ConversationId == _conversation.ConversationId);

                _dbMessages.Messages = _conversation.Messages;

                await _db.SaveChangesAsync();
            }
        }
Пример #2
0
        /// <summary>
        /// Goes through all messages and displays them in 'messageFlowLayoutPanel'.
        /// Also sets color according to the type of message - Incoming / Outgoing.
        /// </summary>
        private void DisplaySentMessages()
        {
            if (_conversation == null || _conversation.Messages.Count < 1)
            {
                Console.WriteLine("DEBUG: No messages found.");
                return;
            }

            foreach (var _message in _conversation.Messages)
            {
                // Decide whether is the message incoming or outgoing
                var _msgType = _message.Sender.UserId == _activeUser.UserId ? MessageType.Outgoing : MessageType.Incoming;

                var _messageBubble = new MessageBubble(_message.Sender, _msgType, _message.Text);
                messageFlowLayoutPanel.Controls.Add(_messageBubble);
            }
        }