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
        public void HandleGetAccountsResponse(JamPacket packet)
        {
            if (packet.Header.DataType != GetAccountsResponse.DATA_TYPE)
            {
                return;
            }

            App.Current.Dispatcher.Invoke(() =>
            {
                MainWindow main = App.Current.MainWindow as MainWindow;
                GetAccountsResponse response = new GetAccountsResponse(packet.Data, main.Client.Serializer);

                foreach (Tuple <Account, bool> tuple in response.Accounts)
                {
                    Account account = tuple.Item1;
                    bool online     = tuple.Item2;

                    if (account.AccountID != LoggedInAccount.Account.AccountID)
                    {
                        DisplayableAccount displayableAccount = new DisplayableAccount(account, online);
                        Accounts.Add(displayableAccount);
                    }
                }
            });
        }
Exemple #3
0
        private void PageLoaded(object sender, RoutedEventArgs e)
        {
            MainWindow main = App.Current.MainWindow as MainWindow;

            LoggedInAccount = new DisplayableAccount(main.Client.Account, true);
            GetAccounts();
        }
Exemple #4
0
        public void HandleAccountOnlineStatusChangedImperative(JamPacket packet)
        {
            if (packet.Header.DataType != AccountOnlineStatusChangedImperative.DATA_TYPE)
            {
                return;
            }

            App.Current.Dispatcher.Invoke(() =>
            {
                MainWindow main = App.Current.MainWindow as MainWindow;

                AccountOnlineStatusChangedImperative imperative = new AccountOnlineStatusChangedImperative(packet.Data, main.Client.Serializer);
                if (imperative.Account == null)
                {
                    return;
                }

                Guid selectedAccountID = Guid.Empty;
                if (selectedAccount != null)
                {
                    selectedAccountID = SelectedAccount.Account.AccountID;

                    DisplayableAccount account = Accounts.Single(x => x.Account.AccountID == imperative.Account.AccountID);
                    Accounts.Remove(account);

                    account.Online = imperative.Online;
                    Accounts.Add(account);

                    if (selectedAccountID == account.Account.AccountID)
                    {
                        SelectedAccount = account;
                    }

                    NotifyPropertyChanged(nameof(CanSendMessage));
                }
            });
        }