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)); }); }
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); } } }); }
private void PageLoaded(object sender, RoutedEventArgs e) { MainWindow main = App.Current.MainWindow as MainWindow; LoggedInAccount = new DisplayableAccount(main.Client.Account, true); GetAccounts(); }
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)); } }); }