Exemple #1
0
        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));
            });
        }
Exemple #2
0
        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);
                }
            }
        }