public void ReceiveMessage(JamPacket packet) { if (packet.Header.DataType != SendMessageImperative.DATA_TYPE) { return; } App.Current.Dispatcher.Invoke(() => { MainWindow main = App.Current.MainWindow as MainWindow; SendMessageImperative imperative = new SendMessageImperative(packet.Data, main.Client.Serializer); Guid senderID = packet.Header.Sender; DateTime sendTimeUtc = packet.Header.SendTimeUtc; DisplayableAccount senderAccount = Accounts.SingleOrDefault(x => x.Account.AccountID == senderID); if (senderAccount == null) { return; } DisplayableMessage receivedMessage = new DisplayableMessage(DisplayableMessage.MessageType.Remote, senderAccount, sendTimeUtc, imperative.Message); if (SelectedAccount != null && SelectedAccount.Account.AccountID == senderID) { receivedMessage.Seen = true; } senderAccount.AddMessage(receivedMessage); NotifyPropertyChanged(nameof(UnseenMessages)); }); }
private void SendMessage(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key == System.Windows.Input.Key.Enter) { e.Handled = true; MainWindow main = App.Current.MainWindow as MainWindow; TextBox messageBox = sender as TextBox; string message = messageBox.Text; messageBox.Clear(); if (message != string.Empty) { SendMessageImperative sendMessage = new SendMessageImperative(message, main.Client.Serializer); JamPacket packet = new JamPacket(SelectedAccount.Account.AccountID, loggedInAccount.Account.AccountID, SendMessageImperative.DATA_TYPE, sendMessage.GetBytes()); main.Client.Send(packet); DisplayableMessage sentMessage = new DisplayableMessage(DisplayableMessage.MessageType.Local, LoggedInAccount, packet.Header.SendTimeUtc, message); SelectedAccount.AddMessage(sentMessage); } } }