public ConversationViewModel(ContactViewModel contactViewModel) : this() { _contactViewModel = contactViewModel; _contactViewModel.PropertyChanged += (sender, e) => { if (e.PropertyName == "Name") { Name = _contactViewModel.Name; } else if (e.PropertyName == "PresenceStatus") { PresenceStatus = _contactViewModel.PresenceStatus; } }; this.Name = contactViewModel.Name; this.PresenceStatus = contactViewModel.PresenceStatus; _typingTimer = new DispatcherTimer(DispatcherPriority.ContextIdle); _typingTimer.Interval = TimeSpan.FromMilliseconds(1000); _typingTimer.Tick += (sender, e) => { if (_lastLocalChatStateChangeTicks > 0 && LocalChatState != ChatStateEvent.Paused && TimeSpan.FromTicks(DateTime.UtcNow.Ticks - _lastLocalChatStateChangeTicks) > TimeSpan.FromSeconds(2)) { LocalChatState = ChatStateEvent.Paused; } }; _typingTimer.Start(); }
private void ProcessMessage(Message message) { if (message.From != null) { var contactViewModel = this.Contacts.FirstOrDefault(c => c.Contact.Identity.Equals(message.From.ToIdentity())); if (contactViewModel == null) { // Received a message from someone not in the roster contactViewModel = new ContactViewModel( new Contact() { Identity = message.From.ToIdentity() }, _clientChannel); this.Contacts.Add(contactViewModel); } if (contactViewModel != null) { contactViewModel.Conversation.ReceiveMessage(message); // Don't focus/show the window if its a chat state message if (!(message.Content is ChatState)) { base.MessengerInstance.Send <OpenWindowMessage>( new OpenWindowMessage() { WindowName = "Conversation", DataContext = contactViewModel.Conversation }); } } } }
private void ProcessMessage(Message message) { if (message.From != null) { var contactViewModel = this.Contacts.FirstOrDefault(c => c.Contact.Identity.Equals(message.From.ToIdentity())); if (contactViewModel == null) { // Received a message from someone not in the roster contactViewModel = new ContactViewModel( new Contact() { Identity = message.From.ToIdentity() }, _clientChannel); this.Contacts.Add(contactViewModel); } if (contactViewModel != null) { contactViewModel.Conversation.ReceiveMessage(message); // Don't focus/show the window if its a chat state message if (!(message.Content is ChatState)) { base.MessengerInstance.Send<OpenWindowMessage>( new OpenWindowMessage() { WindowName = "Conversation", DataContext = contactViewModel.Conversation }); } } } }