// 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(); } }
/// <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); } }